按弹性搜索中字段的单词数排序

时间:2015-05-04 05:46:13

标签: elasticsearch

我的文档中有一个字符串字段。现在我需要根据该字段的字数对文档进行排序。我如何在elasticsearch中实现这一目标?

3 个答案:

答案 0 :(得分:3)

最好的方法是使用token count type。 但是,我们需要确保我们不会破坏原始字符串。为此,我们需要使用multi field并添加其他字段以仅跟踪令牌。

现在,下面的映射最适合我们

{
    "tweet" : {
        "properties" : {
            "name" : {
                "type" : "multi_field",
                "fields" : {
                    "wordCount" : {"type" : "token_count"},
                }
            }
        }
    }
}

答案 1 :(得分:0)

使用 term aggregation ,如:

curl -H GET http://loclahost:9200/index name/_search?pretty=1 -d' 
    {
        "aggs": {
            "genders": {
                "terms": {
                    "field": "gender"
                }
            }
        }
    }'
  

注意:对于curl命令check this

此处搜索字段gender并在聚合存储桶中获取所有性别的结果,默认结果按排序顺序。

答案 2 :(得分:0)

您最好的选择是将令牌计数存储在原始字段旁边。请参阅此处核心类型中的文档:http://www.elastic.co/guide/en/elasticsearch/reference/1.4/mapping-core-types.html#token_count

然后你将按field.word_count排序(其中field是'parent'属性)。