java - 在elasticsearch中构建复合查询

标签 java elasticsearch logical-operators booleanquery

我试图在elasticsearch中使用BoolQueryBuilder搜索以下案例

 select * from students where (name = "XXX" and rollno = 1) or (name = "YYY" and rollno = 2)

我必须为其构建查询生成器。

任何人都可以建议我使用 BoolQueryBuilder 来构建查询。

ElasticSearch 6.1.2

非常感谢任何帮助。

最佳答案

这是用于构建 BooleanQueryBuilder 条件的 java api

        BoolQueryBuilder booleanQuery = QueryBuilders.boolQuery();
        booleanQuery.must(QueryBuilders.termQuery("name", "XXX"));
        booleanQuery.must(QueryBuilders.termQuery("rollno", 1));

        BoolQueryBuilder booleanQuery2 = QueryBuilders.boolQuery();
        booleanQuery2.must(QueryBuilders.termQuery("name", "YYY"));
        booleanQuery2.must(QueryBuilders.termQuery("rollno", 2));

        BoolQueryBuilder boolQueryBuilder3 = QueryBuilders.boolQuery();
        boolQueryBuilder3.should(booleanQuery2);
        boolQueryBuilder3.should(booleanQuery);

关于java - 在elasticsearch中构建复合查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49399181/

相关文章:

elasticsearch - 如何根据单个字段中的值和每个存储桶的计数获得多个字母聚合

c++ - 按位和/或使用三元运算符

java - 使用 jfreechart 在不同点之间创建 XY 图表

java - 了解 FlateDecode 编码的 PDF 流

elasticsearch - Logstash 关闭文件描述符?

java - 我可以使用哪个函数代替 elasticsearch 2.1 中的 ImmutableSettings.settingsBuilder()

javascript - 使用短路逻辑运算符测试空对象

scala - Scala中&和&&的区别?

java - java应用程序中的全局Catch子句

java - 使用蛮力方法在列表中查找最长的非递减子集?