我是弹性搜索的新手,所以请善待。
我正在尝试存储和查询带有 N 个标签的数据。我想将搜索查询数组与存储的数组进行比较,并按与最多标签匹配的项目的顺序返回结果。
数据集示例:
{ name: "karl", tags: ["terrible", "programmer"] }
{ name: "bob", tags: ["awesome", "programmer"] }
查询示例,匹配两个人:
query: { tags: ["programmer"] }
result: [karl, bob]
在这个例子中,两者都被返回,但 bob 得分很高,因为匹配了更多标签,但Karl 仍然显示,尽管没有匹配 on awesome
。
query: { tags: ["programmer", "awesome"] }
result: [bob, karl]
我得到的壁橱是这个,但它似乎没有比卡尔高鲍勃得分
{
"query": {
"bool": {
"should": [
{ "match": { "tags": "programmer" } },
{ "match": { "tags": "awesome" } }
],
"minimum_number_should_match": 1
}
}
}
希望得到一些支持:-)谢谢!