[英]Elasticsearch Query Terms Combination Order
在elasticsearch中,我搜索一些標簽並將它們從最匹配到最不匹配進行排序。 沒關系。
但是,我的問題是關於相等匹配情況的順序。
例如:
我的搜索查詢:
{
"query" : {
"bool" : {
"must" : [
{
"terms" : {
"my_field" : ["tag4", "tag6"],
minimum_should_match : 1
}
},
{"term" : {"my_cityId" : 1}},
{"term" : {"my_townId" : 8}}
]
}
},
"sort" : [
{"_score" : "desc"},
{"my_topTime" : "asc"}
],
"from" : 0,
"size" : 5
}
它返回:
我的搜索順序是tag4,然后是tag6。 如何返回tag4首先包含行,tag6之后包含行?
我從增強過濾子集中找到了解決問題的方法
我在過濾器查詢中使用了“ function_score”,並添加了“ functions”和“ score_mode”。 除此之外,我為“功能”中的每個標簽指定了“重量”。
該查詢首先返回tag4s,然后tag6包含以下行:
我的新查詢:
{
"query" : {
"function_score" : {
"filter" : {
"query" : {
"bool" : {
"must" : [
{
"terms" : {
"my_field" : ["tag4", "tag6"],
minimum_should_match : 1
}
} ,
{"term" : {"my_cityId" : 1}},
{"term" : {"my_townId" : 8}}
]
}
}
},
"functions" : [
{"filter" : {"term" : { "my_field" : "tag4" }}, "weight" : 2},
{"filter" : { "term" : { "my_field" : "tag6" }}, "weight" : 1}
],
"score_mode": "sum"
}
},
"sort" : [
{"_score" : "desc"},
{"my_topTime" : "asc"}
],
"from" : 0,
"size" : 5
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.