我正在尝试在Java Sping Boot 中的ES查询的should子句中添加术语。我需要它看起来像这样:
"should": [
{
"terms": {
"segment_status.nse_status": [
2,
3
],
"boost": 1
}
},
{
"terms": {
"segment_status.pml_status": [
2,
3
],
"boost": 1
}
}
]
我只能为每个should子句添加一个terms条件,但是我需要在同一个should子句中追加多个terms。我的代码:
TermsQueryBuilder termsQuery = termsQuery(SEGMENT_STATUS + DOT + "bse_status", failedUserStatues);
BoolQueryBuilder includeCriteria = boolQuery();
includeCriteria.should(termsQuery);
NestedQueryBuilder nestedQueryForCriteria = nestedQuery(SEGMENT_STATUS, includeCriteria, ScoreMode.Avg);
searchQuery.must(nestedQueryForCriteria);
我使用的是Sping Boot 和ES版本6。4
3条答案
按热度按时间aiqt4smr1#
我试了一下这个,它和预期的一样工作。使用循环进行迭代,并在每次迭代中创建一个terms查询,并在每次迭代中调用should(termsQuery)。
6ju8rftf2#
我们可以使用下面的代码在单个should子句中添加多个术语
fcg9iug33#
在这里,我们使用
TermsQueryBuilder
创建了两个术语查询,然后使用boolQuery
和should方法将这些查询附加到should。