java - Java QueryBuilders 的嵌套 Elasticsearch 查询

标签 java elasticsearch query-builder

我正在尝试在用于 elasticsearch 的 java querybuilder 中实现此 elasticsearch 查询。但我无法获得相同的结果。有人能帮忙吗。

 GET /XX/XX/_search
    {
       "query": {
          "bool": {
             "must": [
                {
                   "nested": {
                      "path": "XX",
                      "filter": {
                         "term": {
                            "A": "7:140453136:T"
                         }
                      }
                   }
                },
                {
                   "nested": {
                      "path": "XX",
                      "filter": {
                         "term": {
                            "B": "RF"
                         }
                      }
                   }
                },
                {
                   "nested": {
                      "path": "XX",
                      "filter": {
                         "term": {
                            "C": "RFFF"
                         }
                      }
                   }
                }
             ]
          }
       }
    }

我试过的代码:

   QueryBuilders qbWithArguments = QueryBuilders.boolQuery()
                    .must(QueryBuilders.termQuery("A", "RF"))
                    .must(QueryBuilders.termQuery("B", "EF"))
                    .must(QueryBuilders.termQuery("C", "RF"));

最佳答案

您还需要添加嵌套查询。使用以下代码:

QueryBuilders.boolQuery().must(nestedQuery("XX", FilterBuilders.termFilter("A","RF")))
                             .must(nestedQuery("XX", FilterBuilders.termFilter("B","EF")))
                             .must(nestedQuery("XX", FilterBuilders.termFilter("C","RF")))

对于更高版本,您可以使用:

QueryBuilders.boolQuery().must(nestedQuery("XX", QueryBuilders.boolQuery()
           .should(QueryBuilders.termQuery("A","RF"))
           .should(QueryBuilders.termQuery("B","EF"))
           .should(QueryBuilders.termQuery("C","RF"))
           .minimumShouldMatch("1")))

注意:在 6.7 中,即使文档保持 ScoreMode 是可选的,您也可能需要在使用 java QueryBuilders 时提供此参数。

关于java - Java QueryBuilders 的嵌套 Elasticsearch 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35074958/

相关文章:

elasticsearch - NEST查询未返回Elasticsearch中保存的Metricbeat字段的数据

php - Symfony2 查询生成器 "SELECT where sum children > 0"

java - 为什么直接内存 'array' 的清除速度比普通的 Java 数组要慢?

java - 方括号导致android中的URL字符串出错

java - 如何在没有同步块(synchronized block)(即低成本锁)的情况下在一个安全操作中原子地检查 Java 中的两个 AtomicBooleans?

java - Mockito 中的模拟类正在调用什么构造函数(如果有)?

java - 在java elasticsearch中获取价格范围在最小值和最大值之间的数据

elasticsearch - 如何在NEST中使用多个索引分析器?

sql - CakePHP 3 : how to make a sum of 2 columns

sql - Symfony2/Doctrine 查询生成器或 SQL - 使用 LIKE 语句时首选哪种方式?