我的许多文档的属性都是这样的值数组:
{
"_index": "myindex",
"_type": "mytype",
"_id": "myid1",
"_source": {
"tags": [
"devid",
"batman",
"obama"
]
}
},
{
"_index": "myindex",
"_type": "mytype",
"_id": "myid2",
"_source": {
"tags": [
"devid",
"superman"
]
}
}
我有一系列元素,例如:["devid", "batman", "pippo"]
我想让所有匹配至少一个数组元素的文档,按匹配的元素数量排序。
例如,我希望myid1
得分高于myid2
。
我该怎么做?
此刻我被困了#34;在这里:
{
"query": {
"function_score": {
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"terms": {
"tags": ["devid", "batman", "pippo"]
}
}
}
}
}
}
}
它只按术语过滤,并将1设为两者的分数。
我 noob 有弹性搜索欢迎任何提示!
答案 0 :(得分:1)
使用terms query代替过滤器会导致包含更多字词匹配的文档获得更高分数。
示例:
{
"query": {
"terms": {
"tags": [
"devid",
"batman",
"pippo"
]
}
}
}