0

次のようなエラスティック検索インデックス値を使用できます

"key": [
            14.0,
            "somestring"
        ]

このデータを取り込もうとすると、このエラーが発生します

org.elasticsearch.hadoop.rest.EsHadoopInvalidRequest: Found unrecoverable error [Bad Request(400) - [WriteFailureException; nested: MapperParsingException[failed to parse [FIXMessage.key]]; nested: NumberFormatException[For input string: "somestring"]; ]]; Bailing out..

まず、上記は有効な JSON 形式ですか? もしそうなら、なぜエラスティックはそれをインデックス化できないのですか?

4

2 に答える 2

2

Elasticsearch は"somestring"数値に変換しようとしていますが、失敗しています。

json は有効であり、Elasticsearch は値の配列から同じフィールドの複数の値を喜んでインデックス化しますが、それらはすべて同じ型である必要があり、型はマッピング内の対応するフィールドの型と一致する必要があります。

フィールドがマッピングに存在しない場合、Elasticsearch は、そのフィールドで最初に確認した値に基づいて適切なデフォルト タイプを使用してフィールドを作成します。したがって、上に投稿したものにインデックスを付けようとしたときに"key"フィールドが存在しなかった場合、Elasticsearch はフィールドを作成し、見つかった最初の値 ( 14.0) を見て、そのタイプを使用することを決定しますfloat。次に、2 番目の値 のインデックスを作成しようとし"somestring"ましたが、float への変換に失敗し、エラーが返されました。

わかる?

この投稿が役に立つかもしれません。

于 2015-09-11T01:34:27.647 に答える