bugfix> json > 投稿

データをelasticsearchに挿入しようとして問題があります。 私は1000個のjsonファイルがあり、 curl を使用してすべてを繰り返したい 、バルクAPIを使用。

私のjsonファイルは次のようになります。

{"index": {"_index": "stuff", "_type": "text", "_id": "1"}}{"lastversion":"2018-01-19","attribution":[],"description":"","notes":[],"alt_names":[],"sources":[],"urls":["https://www.fireeye.com/blog/threat-research/2018/01/microsoft-office-vulnerabilities-used-to-distribute-zyklon-malware.html"],"common_name":"anonym","samples":[{"status":"dumped","sha256":"8d0be4dd8b0ca7608bf3a02a2d212ce845ac733d150b4428376a5a939f1679ec","version":""}]}

私がしたことは:

1.「stuff」という名前のインデックスを作成しました。

curl -H 'Content-Type: application/json' -XPUT "localhost:9200/stuff/"; echo

2.マッピングを作成しました(ほとんどのjsonファイルについて、次のマッピングを作成する方法がわからなかったため:

"samples": [
  {
    "status": "dumped",
    "sha256": "8d0be4dd8b0ca7608bf3a02a2d212ce845ac733d150b4428376a5a939f1679ec",
    "version": ""
  }
]

カールを実行しました:

curl -H 'Content-Type: application/json' -XPUT "localhost:9200/stuff" -d'
{
 "mappings": {
  "doc": {
   "properties": {
    "updated": {"type": "keyword"},
    "attribution": {"type": "keyword"},
    "description": {"type": "keyword"},
    "notes": {"type": "keyword"},
    "alt_names": {"type": "keyword"},
    "sources": {"type": "keyword"},
    "urls": {"type": "keyword"},
    "common_name": {"type": "keyword"}
   }
  }
 }
}
'

3. curlでelasticsearchクラスターにアップロードしようとしました:

curl -H 'Content-Type: application/x-ndjson' -XPOST "localhost:9200/stuff/_bulk" --data-binary @our.json
{"took":5,"errors":true,"items":[{"index":{"_index":"stuff","_type":"text","_id":"1","status":400,"error":{"type":"mapper_parsing_exception","reason":"failed to parse, document is empty"}}}]}

ここで何が間違っていますか? 提供されているJSONのマッピングを適切に作成する方法は?

それについてのフィードバックをお願いします。

回答 1 件
  • まず、 doc というマッピングを作成しています。  そして、以下を使用してデータにインデックスを付けようとします:

    {"index": {"_index": "stuff", "_type": "text", "_id": "1"}}

    これは、次のドキュメントが _type: text の一部になることをESに伝えている  ESで作業している場合は存在しません> 6.0では、1つのインデックスに複数のタイプを含めることはできないため、エラーがスローされます。

    一方、あなたの our.json は  適切に作成されていないため、各文を \n で区切る必要があります 。

    あなたの例は次のようになります:

    {"index": {"_index": "stuff", "_type": "text", "_id": "1"}}
    {"lastversion":"2018-01-19","attribution":[],"description":"","notes":[],"alt_names":[],"sources":[],"urls":["https://www.fireeye.com/blog/threat-research/2018/01/microsoft-office-vulnerabilities-used-to-distribute-zyklon-malware.html"],"common_name":"anonym","samples":[{"status":"dumped","sha256":"8d0be4dd8b0ca7608bf3a02a2d212ce845ac733d150b4428376a5a939f1679ec","version":""}]}
    
    

あなたの答え