2015-01-02 23 views
8

我有一个临时索引,包含需要调节的文档。我想用这些文件中包含的文字对这些文件进行分组。Elasticsearch - 如何获得文档的流行单词列表

例如,我有这些文件:

1 - “AAA BBB CCC DDD EEE FFF”

2 - “BBB MMM AAA FFF XXX”

3 - “HHH AAA FFF”

所以,我想最流行的话,最好有罪状: “AAA” - 3 “FFF” - 3 “BBB” - 2等

这可能与elasticsearch?

回答

10

做一个简单的术语聚合搜索将满足您的需求:

(其中mydata是您的字段的名称)

curl -XGET 'http://localhost:9200/test/data/_search?search_type=count&pretty' -d '{ 
    "query": { 
    "match_all" : {} 
    }, 
    "aggs" : { 
     "mydata_agg" : { 
    "terms": {"field" : "mydata"} 
    } 
    } 
}' 

将返回:

{ 
    "took" : 3, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 5, 
    "successful" : 5, 
    "failed" : 0 
    }, 
    "hits" : { 
    "total" : 3, 
    "max_score" : 0.0, 
    "hits" : [ ] 
    }, 
    "aggregations" : { 
    "mydata_agg" : { 
     "doc_count_error_upper_bound" : 0, 
     "sum_other_doc_count" : 0, 
     "buckets" : [ { 
     "key" : "aaa", 
     "doc_count" : 3 
     }, { 
     "key" : "fff", 
     "doc_count" : 3 
     }, { 
     "key" : "bbb", 
     "doc_count" : 2 
     }, { 
     "key" : "ccc", 
     "doc_count" : 1 
     }, { 
     "key" : "ddd", 
     "doc_count" : 1 
     }, { 
     "key" : "eee", 
     "doc_count" : 1 
     }, { 
     "key" : "hhh", 
     "doc_count" : 1 
     }, { 
     "key" : "mmm", 
     "doc_count" : 1 
     }, { 
     "key" : "xxx", 
     "doc_count" : 1 
     } ] 
    } 
    } 
} 
+0

谢谢你,这是我搜索的解决方案。没有测试你提供的查询,但明白了我必须做的事情。 – oleg

+0

我很惊讶,它不围绕'_mtermvectors' API –

相关问题