Elasticsearch 6.2.3版本 执行聚合报错 Fielddata is disabled on text fields by default

摘要:
背景描述了执行Elastic Search Authority Guide的示例。执行聚合查询时,会报告一个错误,Fielddataisdisabledtontextfieldsbydefault 1)聚合语句如下:GET_Search{“aggs”:{“all_interest”:{“terms”:{“field”:“interest”}}2)错误消息如下:{”error“:{”root_cause“:〔{”type“

背景说明

执行《Elasticsearch 权威指南》的示例,在执行聚合查询的时候,报错 Fielddata is disabled on text fields by default.

1)聚合语句如下:

GET _search
{
  "aggs": {
    "all_interests": {
      "terms": { "field": "interests"}
    }
  }
}

2)报错信息如下:

{
  "error": {
    "root_cause": [
      {
        "type": "illegal_argument_exception",
        "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [interests] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead."
      }
    ],
    "type": "search_phase_execution_exception",
    "reason": "all shards failed",
    "phase": "query",
    "grouped": true,
    "failed_shards": [
      {
        "shard": 0,
        "index": "megacorp",
        "node": "jbFtoSVqQAqfYhE5uTBFvw",
        "reason": {
          "type": "illegal_argument_exception",
          "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [interests] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead."
        }
      }
    ]
  },
  "status": 400
}

3)Kibana 的 Dev Tools 执行截图如下:

Elasticsearch 6.2.3版本 执行聚合报错 Fielddata is disabled on text fields by default第1张

原因分析

Elasticsearch 5.x版本以后,对排序和聚合等操作,用单独的数据结构(fielddata)缓存到内存里了,默认是不开启的需要单独开启

具体请参考:fielddata

Elasticsearch 6.2.3版本 执行聚合报错 Fielddata is disabled on text fields by default第2张

解决方案

1)执行如下语句,将 interests字段进行开启映射mapping:

PUT megacorp/_mapping/employee/
{
    "properties":{
        "interests":{
            "type":"text",
            "fielddata":true
        }
    }
}

2)Kibana 的 Dev Tools 中执行开启映射mapping语句,截图如下:

Elasticsearch 6.2.3版本 执行聚合报错 Fielddata is disabled on text fields by default第3张

3)再次实行聚合语句,结果如下:

Elasticsearch 6.2.3版本 执行聚合报错 Fielddata is disabled on text fields by default第4张Elasticsearch 6.2.3版本 执行聚合报错 Fielddata is disabled on text fields by default第5张
{
  "took": 455,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 3,
    "max_score": 1,
    "hits": [
      {
        "_index": "megacorp",
        "_type": "employee",
        "_id": "2",
        "_score": 1,
        "_source": {
          "first_name": "Jane",
          "last_name": "Smith",
          "age": 32,
          "about": "I like to collect rock albums",
          "interests": [
            "music"
          ]
        }
      },
      {
        "_index": "megacorp",
        "_type": "employee",
        "_id": "1",
        "_score": 1,
        "_source": {
          "first_name": "John",
          "last_name": "Smith",
          "age": 25,
          "about": "I love to go rock climbing",
          "interests": [
            "sports"
          ]
        }
      },
      {
        "_index": "megacorp",
        "_type": "employee",
        "_id": "3",
        "_score": 1,
        "_source": {
          "first_name": "Douglas",
          "last_name": "Fir",
          "age": 35,
          "about": "I like to build cabinets",
          "interests": [
            "forestry"
          ]
        }
      }
    ]
  },
  "aggregations": {
    "all_interests": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": "forestry",
          "doc_count": 1
        },
        {
          "key": "music",
          "doc_count": 1
        },
        {
          "key": "sports",
          "doc_count": 1
        }
      ]
    }
  }
}
View Code

4)Kibana 的 Dev Tools 中,执行效果截图如下:

Elasticsearch 6.2.3版本 执行聚合报错 Fielddata is disabled on text fields by default第6张

免责声明:文章转载自《Elasticsearch 6.2.3版本 执行聚合报错 Fielddata is disabled on text fields by default》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Azure DevOps Server:使用Postman批量删除测试用例卡顿问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用Elasticsearch的processors来对csv格式数据进行解析

来源数据是一个csv文件,具体内容如下图所示: 导入数据到es中 有两种办法,第一种是在kibana界面直接上传文件导入 第二种方法是使用filebeat读取文件导入 这里采用第二种办法 配置文件名:filebeat_covid19.yml filebeat.inputs: - type: log paths: - /covid19/covid...

ElasticSearch 定时批量删除N天前的数据

描述: 之前我已经完成了使用ElasticSearch、kibana、filebeat、三个工具完成分布式集群收集 分布在各个ip地址上的微服务日志,这样就可以统一的在一个服务器上查看了所有的微服务产生的日志了,避免了一个个通过工具远程linux服务器去查看日志,极大提高了日志查看分析的效率了。当时目前我只是完成收集和查看所有日志,那么时间一长我们就会遇到...

elasticsearch 性能优化

转载: https://www.cnblogs.com/jajian/p/10465519.html 硬件选择 Elasticsearch(后文简称 ES)的基础是 Lucene,所有的索引和文档数据是存储在本地的磁盘中,具体的路径可在 ES 的配置文件../config/elasticsearch.yml中配置,如下: # ---------------...

谷歌浏览器安装Elasticsearch-head 插件

谷歌浏览器安装Elasticsearch-head 插件 下载该插件,地址:https://github.com/liufengji/es-head/blob/master/elasticsearch-head.crx 下载后的文件名是:elasticsearch-head.crx 打开谷歌浏览器,找到扩展程序,然后打开开发者模式,拖拽上一步的插件进...

springboot ElasticSearch 简单的全文检索高亮

原文:https://segmentfault.com/a/1190000017324038?utm_source=tag-newest 首先引入依赖 <dependency> <groupId>org.springframework.boot</groupId> &l...

Elasticsearch 搜索多个index和多个type下的数据

转载自: https://www.cnblogs.com/koenigsea/p/13072923.html /_search:所有索引,所有type下的所有数据都搜索出来 GET /_search { "query": { "bool": { "filter": { "term": { "tradingDay": "20200520" } } } }...