解决Elasticsearch的Text类型的字段参与聚合和排序

这篇具有很好参考价值的文章主要介绍了解决Elasticsearch的Text类型的字段参与聚合和排序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说明:

text字段类型用于全文内容,例如电子邮件正文或产品说明,并且es会通过分析器对字符串进行分词,可以在全文检索中搜索单独的单词。文本字段最适合非结构化但可读的内容并且不用于排序,也很少用于聚合
keyword主要用于结构化内容的字段,并且总是会有相同值的字段。因为通常需要用于聚合、排序和术语级查询(如
term),所以避免参与全文检索

如果需要使用text字段类型进行聚合和排序,则需要在建立mapping映射时在fields字段中增加一个keyword类型的数据。

示例:

  "publisherName": {
      "analyzer": "standard",
      "type": "text",
      "fields": {
        "raw": { //此字段用于在聚合和排序场景时使用
          "type": "keyword",
          "ignore_above": 8190
        } 
      }
    },

聚合

{
  "from": 0,
  "size": 10,
  "aggregations": {
    "publisherName": {
      "terms": {
        "field": "publisherName.raw", //如果使用publisherName全文字段检索时,会有下列报错
        "size": 10,
        "min_doc_count": 1,
        "shard_min_doc_count": 0,
        "show_term_doc_count_error": false,
        "order": [
          {
            "_count": "desc"
          },
          {
            "_key": "asc"
          }
        ]
      }
    }
  }
}

报错信息:

Text fields are not optimised for operations that require per-document field data like aggregations and sorting, so these operations are disabled by default. Please use a keyword field instead. Alternatively, set fielddata=true on [publisherName] in order to load field data by uninverting the inverted index. Note that this can use significant memory.

查询成功:
解决Elasticsearch的Text类型的字段参与聚合和排序文章来源地址https://www.toymoban.com/news/detail-515641.html

到了这里,关于解决Elasticsearch的Text类型的字段参与聚合和排序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Springboot操作Elasticsearch——聚合分组与排序

    这两天项目中需要从es中查询数据,根据某个字段进行分组,求其最大、最小、平均值,并按最大值进行排序。 springboot的版本号:2.0.6.RELEASE Elasticsearch的版本号:5.6.3 主要代码记录下: BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery()                 .filter(QueryBuilders.termsQu

    2024年02月16日
    浏览(33)
  • 一文读懂ElasticSearch中字符串keyword和text类型区别_elasticsearch text和keyword

    可以看到,这里的数据被ES分为了4个词分别是“广” ,“东”,“深”,“圳”。同样,第二条数据也被分为了“广” ,“西”,“南”,“宁”。这里可以理解为 keyword类型存储的数据为“广东深圳”(存储未分词的原始数据) text类型存储的数据为“广” ,“东”,“深

    2024年04月16日
    浏览(34)
  • 为什么 Elasticsearch 中高基数字段上的聚合是一个坏主意以及如何优化它

    Elasticsearch 是分布式搜索和分析引擎,是满足搜索和聚合需求的最受欢迎的选择。 Elasticsearch 提供了 2 种数据类型来存储字符串值: Text :- 在存储到倒排索引之前对这些内容进行分析,并针对全文搜索进行优化。 文本字段不允许聚合 Keyword :- 它们按原样存储在倒排索引中,

    2024年02月08日
    浏览(44)
  • Elasticsearch - 聚合获取原始数据并分页&排序&模糊查询

    ES版本: 7.6. 需要按照主机ID 进行告警时间的汇总,并且还得把主机相关的信息展示出来。 注: 所有的数据都存在索引中, 通过一个DSL查询展示 实际上就是将terms聚合的结果以列表形式分页展示。 bucket_sort中 from不是pageNum,如想实现pageNum效果,from=pageNum*size即可; terms聚合

    2024年02月05日
    浏览(36)
  • ElasticSearch修改索引字段类型

    线上功能报错,一看日志是往es中添加数据报错,错误日志如下: 说是数据中有个字段类型转换错误,一查es脚本工具,果然生产es索引中categoryId这个字段是integer类型,而实际是long类型。 es不能直接修改索引字段类型,需要删除调新建,具体方法如下 我这次遇到问题的es索引

    2023年04月08日
    浏览(32)
  • Elasticsearch映射与字段类型

    Elasticsearch映射与字段类型 Elasticsearch是一个分布式、实时的搜索和分析引擎,基于Lucene库构建。它可以快速、高效地索引、搜索和分析大量数据。在Elasticsearch中,数据以文档的形式存储,每个文档都有一个唯一的ID。文档可以存储在一个索引中,索引可以存储在一个集群中。

    2024年02月22日
    浏览(55)
  • 7.elasticsearch字段类型列表

    1.本文总结自  Field datatypes | Elasticsearch Guide [7.2] | Elastic 2.本文罗列了 elasticsearch常用的字段类型; 3.es字段类型总结(https://www.elastic.co/guide/en/elasticsearch/reference/7.2/mapping-types.html): 1)核心数据类型: string字符串: text:文本类型(分词); keyword:类型(不分词);

    2024年02月02日
    浏览(36)
  • Elasticsearch聚合学习之四:结果排序,阿里云java面试

    返回结果如下,已经按照key的大小从大到小排序: … “aggregations” : { “price” : { “buckets” : [ { “key” : 80000.0, “doc_count” : 1 }, { “key” : 60000.0, “doc_count” : 0 }, { “key” : 40000.0, “doc_count” : 0 }, { “key” : 20000.0, “doc_count” : 4 }, { “key” : 0.0, “doc_count” : 3 } ] } } }

    2024年04月09日
    浏览(30)
  • elasticsearch 其他字段类型详解和范例

    elasticsearch 中 别名字段 的详解和范例 elasticsearch 中 二进制类型 的详解和范例 elasticsearch 中的 嵌套类型 的详解和范例 elasticsearch 中的 范围类型 的详解和范例 elasticsearch 中的 排名类型 的详解和范例 elasticsearch 中的 ip类型 的详解和范例 elasticsearch 中的 search-as-you-type 类型 的详

    2024年02月02日
    浏览(30)
  • elasticsearch[四]-数据聚合排序查询、搜索框自动补全、数据同步、集群

    **聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些统计功能的比数据库的 sql 要方便的多,而且查询速度非常快,可以实现近

    2024年01月19日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包