我想在elasticsearch中写一个查询只是为了得分可以任何人请告诉我我怎么能这样做我的查询也在下面给出“minimum_should_match”:0不能使用应该,如果任何查询匹配area2和area1然后我想提高结果的分数现在我怎么能实现,任何人都可以告诉我最后的查询,我应该写?
query: {
bool: {
must: [
{
query_string: {
query: shop_search,
fields: ['shop_name'],
boost: 30.0
}
},
{
bool: {
should: [
{
term : { 'address.area2' : search_area2 },
term : { "address.area1" : search_area1 }
},
"minimum_should_match" : 0,
],
}
}
]
}
答案 0 :(得分:1)
您是否希望获得与商店搜索匹配的所有记录,并在address.area1和/或address.area2字段值与区域搜索匹配时提升结果?
您正在使用的bool
语法已关闭。需要修复匹配子句以满足Elasticsearch的期望,并且不需要额外的嵌套bool
。见Elasticsearch Bool Query。
{
"query" : {
"bool" : {
"must" : {
"query_string" : {
"query" : <SHOP_SEARCH>,
"fields" : ['shop_name']
}
},
"should" : [
{
"match" : {
"address.area1" : {
"query" : <SEARCH_AREA1>,
"operator" : "and",
"boost" : <CUSTOM_BOOST1>
}
}
},
{
"match" : {
"address.area2" : {
"query" : <SEARCH_AREA2>,
"operator" : "and",
"boost" : <CUSTOM_BOOST2>
}
}
}
]
}
}
}
我认为通过该查询,您可以期待以下内容:
您可能希望查看使用query_string
获得的所有内容。