web-dev-qa-db-ja.com

ElasticSearch 5.1フィールドデータはデフォルトでテキストフィールドで無効になっています[エラー:フィールドで集計を使用しようとしています]

マッピングにこのフィールドがある

"answer": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },

この集計を実行しようとします

"aggs": {
"answer": {
  "terms": {
    "field": "answer"
  }
},

しかし、私はこのエラーが出ます

"type": "illegal_argument_exception",
      "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [answer] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory."

マッピングを変更する必要がありますか、それとも間違った集計を使用していますか? (2.xから5.1に更新されました)

8
Nacho Nieva

次のように、keywordサブフィールドで集計する必要があります。

"aggs": {
"answer": {
  "terms": {
    "field": "answer.keyword"
  }
},

うまくいきます。

25
Val

集計では、答えにキーワードを追加するだけです。テキストフィールドの場合、キーワードを追加する必要があります。 "フィールド": "answer.keyword"

1
yogitha

@Valの回答に加えて、マッピング自体の間にfielddataをtrueに設定することもできます。

"answer": {
        "type": "text",
        "fielddata": true, <-- add this line
        "fields": {
          "keyword": {
            "type": "keyword",                
            "ignore_above": 256
          }
        }
      },
0
Kulasangar