我正在使用Java API处理我本地计算机上的嵌套映射索引的Elasticsearch(7.1.1)嵌套查询。我得到的响应与我拥有的其余api查询不同。
我有一个映射,指定它是嵌套的,当我在kibana上对其进行测试时,它可以正常工作。
这是使用Rest api的示例查询。
GET my-index/_search
{
"query":{
"bool":{
"must":[
{
"nested":{
"path":"xx.yy.",
"query":{
"bool":{
"must":[
{
"match":{
"xx.yy.NAME":"cc"
}
},
{
"match":{
"xx.yy..VALUE":"ss"
}
}
]
}
}
}
},
{
"nested":{
"path":"xx.yy",
"query":{
"bool":{
"must":[
{
"match":{
"xx.yy.NAME":"ff"
}
},
{
"match":{
"xx.yy.VALUE":"ee"
}
}
]
}
}
}
},
{
"nested":{
"path":"xx.yy",
"query":{
"bool":{
"must":[
{
"match":{
"xx.yy.NAME":"kk"
}
},
{
"match":{
"xx.yy.VALUE":"gg"
}
}
]
}
}
}
}
]
}
}
}
这是我想出的等效Java代码。
searchSourceBuilder.query( QueryBuilders.boolQuery ()
.must(QueryBuilders.nestedQuery( path, matchQuery ( fNameOne, fValueOne ),ScoreMode.Avg )).minimumShouldMatch ( 1 )
.must(QueryBuilders.nestedQuery( path, matchQuery ( fNameTwo, fValueTwo ),ScoreMode.Avg )).minimumShouldMatch ( 1 )
.must(QueryBuilders.nestedQuery (path, matchQuery ( fNameThree, fValueThree ),ScoreMode.Avg )).minimumShouldMatch(1));
任何人都可以指出我犯错的地方或给我指示如何解决此问题的方法吗?非常感谢您的帮助。