ES SearchSourceBuilder的一些常用用法的记录
By:Roy.LiuLast updated:2022-12-18
用ES存储数据,存进去简单,查询的时候,构造条件比较晕。其实本来也类似SQL的插件,写SQL语句,然后转成es的语法解析。但环境没有装。只能通过 hightRestClient去操作。这个searchsourceBulider的设计,其实并不友好,开发人员并不能专注于业务。要去拼很多条件。经常容易忘记。通过一段代码先记录下。
long startTime = new Date().getTime() - 300000000; long endTime = new Date().getTime(); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); //-----------------------指定where条件------------------------- //name = 'name1' QueryBuilder tempBuilder = QueryBuilders.termQuery("name","name1"); //must:and should:or boolQueryBuilder.must(tempBuilder ); // date >=时间戳 tempBuilder = QueryBuilders.rangeQuery("date").from(startTime, true); boolQueryBuilder.must(tempBuilder); // date<=时间戳 tempBuilder = QueryBuilders.rangeQuery("date").to(endTime, true); boolQueryBuilder.must(tempBuilder); // 设置in查询, 其他字段的in 查询,不是ID字段。 //List<String> listId = new ArrayList<>(); //listId.add("CE129F72F2074F549113B2FFCB3EB27F"); //listId.add("3DF4DDE120CB4781BBE1AAE643ECE1B8"); //listId.add("04ED5EC532CE4368B15F748DF0DCCC68"); //boolQueryBuilder.must(QueryBuilders.termQuery("_id", listId)); // id in查询 tempBuilder = QueryBuilders.idsQuery().addIds("CE129F72F2074F549113B2FFCB3EB27F","3DF4DDE120CB4781BBE1AAE643ECE1B8","04ED5EC532CE4368B15F748DF0DCCC68"); boolQueryBuilder.must(tempBuilder); // ------------把where条件 设置进SearchSourceBuilder sourceBuilder.query(boolQueryBuilder);
有了这个sourceBulier之后,就可以做自己想要的查询了
From:一号门
Previous:Web3与元宇宙
Next:不惑之年的最近生活状态
COMMENTS