Elasticsearch - 语料库大小/总术语频率

时间:2015-08-13 14:30:21

标签: elasticsearch

有没有办法在我的数据子集中获取字段的语料库大小?换句话说,我想要计算某个领域的所有单词。单词在文档中,满足查询条件。

此信息由术语向量提供。术语向量可以应用于特定文档,但不能应用于多个文档。 Multi-term vectors允许指定文档ID列表,以检索每个文档中每个术语的每个术语矢量统计量。不幸的是它们没有聚合,我必须自己聚合它们。

是否有更灵活的方式来实现汇总的术语统计?我可以使用groovy scripts汇总术语向量吗?

解决方案: @Val,谢谢你的解决方案。对my_int_value=1的所有文档的查询如下所示:

GET /index/type/_search?search_type=count
{
  "query": {
    "filtered": {
      "filter": {
        "term": {
          "my_int_value": 1
        }
      }
    }
  },
  "aggs" : {
    "counting" : {
      "sum" : {
        "field" : "your_field.word_count"
      }
    }
  }
}

1 个答案:

答案 0 :(得分:1)

如果您关心的是字段中的标记/单词数,您还可以在字符串字段中声明token_count子字段。您的映射将如下所示:

{
    "your_type" : {
        "properties" : {
            "your_field" : {
                "type" : "string",
                "fields" : {
                    "word_count": {
                        "type" : "token_count",
                        "store" : "yes",
                        "analyzer" : "standard"
                    }
                }
            }
        }
    }
}

然后在您的查询中,您可以参考your_field.word_count字段来获取your_field中可用的令牌/字词数。