2017-05-09 5 views
0

elasticsearchインデックスのgeo_pointフィールドのマッピングを更新しようとしていますが、問題が発生しています。私はKibanaで開発ツールコンソールを使用しています。Kibanaを使用した既存のElasticsearch Indexマッピング(geo_point)の上書き/更新

geo_pointのデータは2重配列形式です。私はelasticsearch-hadoop-5.3.1.jarでsparkを使用しています。データはelasticsearch/kibanaに入っていますが、geo_pointに変換する必要がある間は数値形式のままです。

インデックスマッピングが定義されたら、それを更新できないようです。

PUT my_index 
{ 
    "mappings": { 
    "my_type": { 
     "properties": { 
     "my_location": { 
      "type": "geo_point" 
     } 
     } 
    } 
    } 
} 

この結果、「インデックスは既に存在します」例外エラーが発生しました。

ありがとうございます。

答えて

0

あなたが使用したコマンドは、前述のマッピングで新しいインデックスを作成しようとしました。詳細については、最初の例hereの足のノートをお読みください。

Elasticsearchのドキュメントでは、既存のフィールドのマッピングを更新することはできません。

は、一般的にはフィールドマッピング

更新、既存のフィールドのマッピングを更新することはできません。そこには がいくつかあります。たとえば、

  • オブジェクトデータ型フィールドに新しいプロパティを追加できます。
  • 新しい複数のフィールドを既存のフィールドに追加することができます。
  • ignore_aboveパラメータを更新できます。 geo_pointとして

は、上記のいずれの場合にも該当しない、あなたはそのフィールドのマッピングを変更することはできません。

データがreindex必要な場合があります。

+0

ありがとうございます。あなたが共有した情報に感謝します。フォローアップのために、devツールコンソールで上記のputメソッドを使用してインデックスとマッピングを作成し、そのフィールド(geo_pointフィールド)を作成すると、sparkを使用してデータを取り込み、そのフィールドの最初のマッピングは、これがこれまでの最も簡単な解決策であるように思われます。 – Rob

+0

@Rob申し訳ありませんが、私はあなたが伝えようとしていたものを手に入れませんでした! – avr

+0

ええ、私は今それを得る。エラスティックサーチでは明示マッピングと呼ばれます。だから、この考え方はelasticsearch推論のデータ型を代わせる代わりに、マッピングを事前定義してデータを取り込むことができます。 – avr

関連する問題