假设我有一个索引test_index,它包含两个文档:1.敏捷的棕色狐狸跳过懒狗1.有一只棕色的狐狸我想写一个查询,它可以显示所有唯一字的文档计数。所以输出将是这样的:
test_index
z9zf31ra1#
不确定是否有一个可能的查询来实现该结果,但要获得您特别想要的某些单词的频率,您可以使用术语向量并获得最频繁的单词。将term_statistics设置为true(默认值为false)将返回
yc0p9oo02#
一种以统一的方式实现这一点的方法是在文本字段上启用fielddata。假设你有一个名为content的text类型的字段,它包含你想要分析的数据,那么你需要像这样修改你的Map:
fielddata
content
text
PUT test/_mapping { "properties": { "content": { "type": "text", "fielddata": true } } }
然后,您可以在该字段上运行terms聚合,如下所示:
terms
POST test/_search { "size": 0, "aggs": { "usage": { "terms": { "field": "content", "size": 10 } } } }
你会得到你所期望的:
{ "aggregations" : { "usage" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 1, "buckets" : [ { "key" : "brown", "doc_count" : 2 }, { "key" : "fox", "doc_count" : 2 }, { "key" : "a", "doc_count" : 1 }, { "key" : "dog", "doc_count" : 1 }, { "key" : "jumps", "doc_count" : 1 }, { "key" : "lazy", "doc_count" : 1 }, { "key" : "over", "doc_count" : 1 }, { "key" : "quick", "doc_count" : 1 }, { "key" : "the", "doc_count" : 1 }, { "key" : "there", "doc_count" : 1 } ] } } }
注意,但是,强烈建议不要这样做,因为字段数据加载在内存中,并且根据您运行此操作的数据量,这可能会占用大量内存。
2条答案
按热度按时间z9zf31ra1#
不确定是否有一个可能的查询来实现该结果,但要获得您特别想要的某些单词的频率,您可以使用术语向量并获得最频繁的单词。
将term_statistics设置为true(默认值为false)将返回
yc0p9oo02#
一种以统一的方式实现这一点的方法是在文本字段上启用
fielddata
。假设你有一个名为
content
的text
类型的字段,它包含你想要分析的数据,那么你需要像这样修改你的Map:然后,您可以在该字段上运行
terms
聚合,如下所示:你会得到你所期望的:
注意,但是,强烈建议不要这样做,因为字段数据加载在内存中,并且根据您运行此操作的数据量,这可能会占用大量内存。