Elasticsearch 6.2.3版本 執行聚合報錯 Fielddata is disabled on text fields by default


背景說明

執行《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 5.x版本以后,對排序和聚合等操作,用單獨的數據結構(fielddata)緩存到內存里了,默認是不開啟的需要單獨開啟

具體請參考:fielddata

 

 

解決方案

1)執行如下語句,將 interests字段進行開啟映射mapping:

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

 

2)Kibana 的 Dev Tools 中執行開啟映射mapping語句,截圖如下:

 

3)再次實行聚合語句,結果如下:

{
  "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 中,執行效果截圖如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM