尝试构建工作弹性查询以获取具有这两个查询文件值的文档,例如,我希望文档或数据的国家/地区为“印度”,财富为“12或10或09”
我试图构建下面的查询,但没有得到预期的结果
{
"query": {
"nested": {
"path": "person_details",
"query": {
"bool": {
"should": [
{ "match": {"person_details.weath": "12"}},
{ "match": {"person_details.weath": "10"}},
{ "match": {"person_details.weath": "09"}}
]
}
},
"query": {
"term": {
"person_details.country": "INDIA"
}
}
}
}
}
所以例如在后端,他们是四个人,但有以下细节
person country person wealth
india 12
japan 23
india 10
india 09
US 12
然后形成的弹性查询必须返回3个人的详细信息,但我的框架查询返回4个条目(也返回美国人详细信息),我的查询不严格考虑国家条件。
对此有任何想法,坚持下去。
更新:基于@paqash更新查询的一个答案
{
query: {
nested: {
path: "product_vendors",
query: {
bool :{
must : [
bool : {
should : [
{ "match": {"product_vendors.manufacturer_style": "123"}},
{ "match": {"product_vendors.manufacturer_style": "345"}}
]
},
term : {
"product_vendors.id": "777"
}
]
}
}
}
}
}
甚至在下面尝试过
{
"query": {
"nested": {
"path": "product_vendors",
"query": {
"bool" :{
"must" : [
"bool" : {
"should" : [
{ "match": {"product_vendors.manufacturer_style": "123"}},
{ "match": {"product_vendors.manufacturer_style": "345"}}
]
},
"term" : {
"product_vendors.id": "777"
}
]
}
}
}
}
}
低于解析错误
{ “message”:“错误的请求:无效的Json和异常是groovy.json.JsonException:期待'}'或','但得到当前字符'q',其int值为113 \ n \ n当前字符读取为'q 'int值为113 \ nexpecting'}'或','但得到当前字符'q',其int值为113 \ nline number 2 \ nindex number 4 \ n query:{\ n .. ^“ }
答案 0 :(得分:0)
你应该在must子句中的bool查询中同时进行查询。所以替换:
"query": {
"bool": {
"should": [
{ "match": {"person_details.weath": "12"}},
{ "match": {"person_details.weath": "10"}},
{ "match": {"person_details.weath": "09"}}
]
}
},
"query": {
"term": {
"person_details.country": "INDIA"
}
}
使用:
query: {
bool: {
must: [
bool: {
should: [
{ "match": {"person_details.weath": "12"}},
{ "match": {"person_details.weath": "10"}},
{ "match": {"person_details.weath": "09"}}
]
},
term: {
"person_details.country": "INDIA"
}
]
}
}