2017-08-22 17 views
0

Elasticsearch 5.5.2とKibana用のDockerコンテナをインストールしました。私は、マッピングタイプについて学ぶために始めた、とxcurlを通じて次のコードを使用して索引を作成しました:弾性検索の基本的なマッピングが失敗する

{ 
    "mappings": { 
    "user": { 
     "_all":  { "enabled": false }, 
     "properties": { 
     "title": { "type": "text" }, 
     "name":  { "type": "text" }, 
     "age":  { "type": "integer" } 
     } 
    } 
} 

インデックスが正常に作成されたと私はいくつかのデータを挿入することを決めました。文字列を整数フィールドi.e. {"age": "hello"}に追加しようとすると、Elasticにエラーが表示されます(これはマッピングが正常に機能していることを意味します)。問題は他のデータ型にあります:

1.Itは文字列フィールドに整数と浮動小数点を受け入れます(これは暗黙のキャストのために考えられます)。

2.Itは

(整数にfloatからキャストを行っていないことを意味し、IはKibanaまたは ageフィールドの内容xcurl検索するとフロートとしてではなく整数として示されている) age分野における 22.4ようなフロートを受け付け

何が悪いのですか?

+0

はあなたが文書を挿入している方法を説明することはできますか? – aclokay

+0

質問の最初の部分については、 '22.2'は完全に有効な文字列です。文字列は普通の文字ではなく、何でもかまいません。違いは、 'text'フィールドが解析され、他のフィールドとは異なる方法でトークン化されることです。 – MatsLindh

+0

@aclokay 'curl -XPOST localhost:9200/my_index/user -d '{"タイトル ":"タイトル "、"名前 ":"ユーザー名 "、"年齢 ":223.5}''それは '{ "_index": "my_index"、 "_type": "ユーザ"、 "_id": "AV4JO3pZh8gyIWsivJ6d"、 "_version":1、 "結果": "作成"、 "_shards":{ "合計」:2、 "成功":1、 は "失敗":0 }、 は "" 作成:真 } ' – Marco

答えて

1

強制変換を無効にしようとしましたか?これは、フィールドレベルで行うことができます。

{ 
    "mappings": { 
     "user": { 
     "_all":  { "enabled": false }, 
     "properties": { 
      "title": { "type": "text" }, 
      "name":  { "type": "text" }, 
      "age":  { "type": "integer", 
         "coerce": false} 
     } 
     } 
    } 

またはすべてのフィールドのインデックスレベルで:

"settings": { 
     "index.mapping.coerce": false 
    }, 
    "mappings": { 
    ... 
+0

それはうまくいきました。ありがとう@Imma :) – Marco

関連する問題