Elasticsearch术语查询:较少的标签 - 更相关

时间:2014-08-26 05:08:01

标签: elasticsearch

我有一个产品索引。每个产品都有自己的标签,如

{
    "_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 

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中已更改,有关详细信息,请查看此页面:

http://www.elasticsearch.org/blog/scripting-security/