Explicit mappingに存在しないプロパティは動的に追加されますか?


#1

使用中のElasticsearchバージョン: v5.5

Index templateで作成した expliciti mapping があり、多数のドキュメントを格納しています。

アプリケーション側での必要性から、既存ドキュメントに新しいプロパティを追加してインデックスしたところ、そのプロパティがmappingに追加されないようでした。

そこで質問なのですが、

  • Explicit mappingに存在しないプロパティは動的に追加されていきますか
  • されない場合は、明示的にPut Mapping APIでmappingを更新してからインデックスすればよいでしょうか

なお、上記ページで "Templates are only applied at index creation time. Changing a template will have no impact on existing indices. "(Index templateはindex作成時にのみ適用される)と上述のドキュメントにありましたので、Index templateは更新していません。

参考のため、以下のようなIndex templateがあり、

{
  "template": "*.foo",
  "settings": {

  },
  "mappings": {
    "bar": {
      "properties": {
        "name": {
          "type": "keyword"
        }
      }
    }
  }
}

この bar に、新しいプロパティ hoge を持つドキュメントを追加しようとしております。


#2

自己解決いたしました。

質問の「Explicit mappingに存在しないプロパティは動的に追加されますか?」の答えは、
「追加される」で合っているようです。

当方で追加されていないようにみえた原因は、当方のアプリケーション側の不具合でした。
新しいプロパティがない古い形式のJSONがElasticsearchにインデックスされておりました…。


(system) #3

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.