Elasticsearchへのデータ登録について


#1

elasticsearchへデータの登録をしたいのですが以下の通り失敗します。
考えられる理由を教えて下さい。

[環境]
・CentOS 7.5 (64bit)
・elasticsearch 6.4.2
・kibana 6.4.2

[実行]
sudo curl -H 'Content-Type: application/json' -XPOST http://localhost:9200/hoge_index/hoge_type -d @"/home/xxx/xxx.json"

[結果]
{"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"failed to parse"}],"type":"mapper_parsing_exception","reason":"failed to parse","caused_by":{"type":"not_x_content_exception","reason":"Compressor detection can only be called on some xcontent bytes or compressed xcontent bytes"}},"status":400}


(tsgkdt) #2

投入しているjsonが不明なので、確実なことは言えませんが、こんな形式になってませんか?

  [
    {"column1": "aaa" },
    {"column1": "bbb"}
  ]

このような形だと、結果で示されている内容と同じエラーになりました。

もし、この配列のデータを1つのドキュメントとして登録したいのであれば、

{ "root" : 
   [
      {"column1": "aaa"}, 
      {"column1": "bbb"}
   ]
}

とすることで、エラー回避できると思います。
検索したらこんな感じになりました。

 "hits": [
      {
        "_index": "hoge_index",
        "_type": "hoge_type",
        "_id": "nCTFhGYBHriAqcGd5dF3",
        "_score": 1,
        "_source": {
          "root": [
            {
              "column1": "abc",
              "column2": "def",
              "column3": "dghi",
              "column4": "jkl",
              "column5": "mno"
            },
            {
              "column1": "pqr",
              "column2": "stu",
              "column3": "vwx",
              "column4": "",
              "column5": ""
            }
          ]
        }
      }
    ]

もし、2つのドキュメントとしたい、ということであればBulk APIの方を利用すると良いと思います。
https://www.elastic.co/guide/en/elasticsearch/reference/6.4/docs-bulk.html

ご参考になれば幸いです。


#3

ご指摘の通りでした。解決しました。
ありがとうございます。


(system) #4

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