如何根据elasticsearch中的索引和类型获取所有文档的字数?

时间:2016-08-11 10:41:33

标签: elasticsearch

如果我的文档很少,并希望得到特定字段所有文档中每个单词的计数,我该怎么办?

ex:Doc1:" aaa bbb aaa ccc"     doc2:" aaa ccc"     doc3:" www"

我希望它像 aaa-3,bbb-1,ccc-2,www-1

1 个答案:

答案 0 :(得分:0)

如果您想要文档计数,可以使用terms aggregation这样做:

POST your_index/_search
{
    "aggs" : {
        "counts" : {
            "terms" : { "field" : "your_field" }
        }
    }
}

<强>更新

如果您想获得术语计数,则需要使用_termvector API,但是,您只能查询一个又一个文档。

GET /your_index/your_type/1/_termvector?fields=your_field

对于doc1,您将获得

  • aaa:2
  • bbb:1
  • ccc:1

multi-term vectors API可以提供帮助,但您仍然需要指定文档来获取术语向量。

POST /your_index/your_type/_mtermvectors' -d '{
   "docs": [
      {
         "_id": "1"
      },
      {
         "_id": "2"
      },
      {
         "_id": "3"
      }
   ]
}'

对于你的文档,你会得到

  • aaa:2 + 1
  • bbb:1
  • ccc:1 + 1
  • www:1