我有一个产品索引。每个产品都有自己的标签,如
{
"_id": 1,
"tags": ["red", "blue", "green"]
...
},
{
"_id": 2,
"tags": ["red", "blue"]
...
},
{
"_id": 3,
"tags": ["red"]
...
}
如何针对“标记”字段创建一个术语查询,该字段考虑对象关联的标记数量?我想看看“red”标签查询的以下结果:
1: _id=3
2: _id=2
3: _id=1
答案 0 :(得分:1)
您可以使用script based sort
{
"query": {
"match_all": {}
},
"sort": {
"_script": {
"script": "doc.containsKey('tags') == false ? 0 : doc['tags'].values.size()",
"order": "asc",
"type": "string"
}
}
}
有关脚本的安全性在更新版本的ElasticSearch中已更改,有关详细信息,请查看此页面: