【发布时间】:2015-09-18 19:31:28
【问题描述】:
在elasticsearch中,我搜索一些标签并将它们从最匹配到最不匹配排序。没关系。
但是,我的问题是关于相等匹配情况的顺序。
例如:
- 我存储了这些标签:“tag1”、“tag2”、“tag3”、“tag4”、“tag5”
- 我存储了这些标签:“tag6”、“tag1”
- 我存储了这些标签:“tag4”、“tag3”、“tag1”
- 我存储了这些标签:“tag2”、“tag1”、“tag5”、“tag7”
我的搜索查询:
{
"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
}
返回:
- “tag6”、“tag1”
- “tag1”、“tag2”、“tag3”、“tag4”、“tag5”
- “tag4”、“tag3”、“tag1”
我的搜索顺序是tag4,然后是tag6。怎么能先返回tag4包含行,后返回tag6?
【问题讨论】:
-
您在查询中提供的术语顺序与匹配文档的分数无关。在您的案例中,这 3 个文档的顺序完全取决于 "my_topTime" 。
-
顺便说一下,“my_topTime”字段值都是相等的。可以忽略。
标签: search elasticsearch combinations combinatorics