java QueryBuilders 的嵌套弹性搜索查询
Nested elasticsearch query for java QueryBuilders
我正在尝试在 java elasticsearch 查询生成器中实现此 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"));
您还需要添加 nested query
。使用以下代码:
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 elasticsearch 查询生成器中实现此 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"));
您还需要添加 nested query
。使用以下代码:
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 时可能需要提供此参数。