ElasticSearch按文档字段分组并计数发生次数

ElasticSearch按文档字段分组并计数发生次数,第1张

ElasticSearch按文档字段分组并计数发生次数

案例映射

PUT /index{  "mappings": {    "doc": {      "properties": {        "querySearched": {          "type": "text",          "fielddata": true        }      }    }  }}

您的查询应如下所示

GET index/_search{  "size": 0,  "aggs": {    "result": {      "terms": {        "field": "querySearched",        "size": 10      }    }  }}

您应该添加

fielddata:true
以启用聚集 文本
类型的字段更多的是

    "size": 10, => limit to 10

在与@Kamal简短讨论之后,我有义务告诉您,如果选择启用

fielddata:true
,则必须知道它会占用大量堆空间。

通过我分享的链接:

字段数据会占用大量堆空间,尤其是在加载高基数的文本字段时。一旦将字段数据加载到堆中,它在该段的生命周期内将一直保留在堆中。同样,加载字段数据是一个昂贵的过程,可能导致用户遇到延迟命中。这就是默认情况下禁用字段数据的原因。

另一种选择(更有效的选择):

PUT /index{  "mappings": {    "doc": {      "properties": {        "querySearched": {          "type": "text",          "fields": {"keyword": {  "type": "keyword",  "ignore_above": 256}         }        }      }    }  }}

然后你的聚合查询

GET index/_search{  "size": 0,  "aggs": {    "result": {      "terms": {        "field": "querySearched.keyword",        "size": 10      }    }  }}

两种解决方案都可以,但是您应该考虑这一点。

希望能帮助到你



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4906208.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存