【问题标题】:Elasticsearch - corpus size / overall term frequencyElasticsearch - 语料库大小/整体词频
【发布时间】:2015-08-14 16:42:10
【问题描述】:

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

此信息由术语向量提供。术语向量可以应用于特定文档,但不能应用于多个文档。 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"
      }
    }
  }
}

【问题讨论】:

  • 如果您只需要在一个字段中不同的词,您可以使用Cardinality Aggregation 来近似这个数字。

标签: elasticsearch


【解决方案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 中可用的标记/单词的数量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-27
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多