gpt4 book ai didi

elasticsearch - 如何在 java api 的 should/must 方法中添加 bool 查询?

转载 作者:行者123 更新时间:2023-12-03 00:32:00 28 4
gpt4 key购买 nike

我在 elasticsearch 中有这样的查询:

"query": {
"bool": {
"should": [
{"bool": {
"must": [
{"term": {
"field1": "value1"
}},
{"term": {
"field2": "value2"
}}
]}
},
{"bool": {
"should": [
{"term":{
"field1": "value3"
}}
]}
}
]
}
}

基本上,它是 ((field1 == value1 AND field2 == value2) OR (field1 == value3))。但是我还没有找到在 Java API 中实现它的方法。我试过这样的事情:

 BoolQueryBuilder filter = new BoolQueryBuilder()
.should(QueryBuilders.termQuery(field1, value3)
.should(QueryBuilders.boolQuery().must(QueryBuilders.termQuery(field1, value1))
.must(QueryBuilders.termQuery(field2, value2)))
);

但是 should 方法不采用 BoolQueryBuilder。正确的做法是什么?非常感谢。

最佳答案

你快到了,你搞砸了一个括号。但是让我们用更易读的代码重写您的查询:

BoolQueryBuilder first = QueryBuilders.boolQuery()
.must(QueryBuilders.termQuery(field1, value1))
.must(QueryBuilders.termQuery(field2, value2));

BoolQueryBuilder second = QueryBuilders.termQuery(field1, value3);

BoolQueryBuilder filter = new BoolQueryBuilder()
.should(first)
.should(second);

关于elasticsearch - 如何在 java api 的 should/must 方法中添加 bool 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40923945/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com