我的文档中有一个字符串字段。现在我需要根据该字段的字数对文档进行排序。我如何在elasticsearch中实现这一目标?
答案 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'属性)。