отображения эластичного поиска 6.2 с bulk_api - PullRequest
0 голосов
/ 25 мая 2018

У меня проблема с попыткой вставить данные в эластичный поиск.У меня есть 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:

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 в кластерasticsearch:

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 Ответ

0 голосов
/ 25 мая 2018

Прежде всего, вы создаете отображение с именем doc и пытаетесь индексировать данные с помощью:

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

Это говорит ES о том, что следующий документ будет частью_type: text, который не существует, если вы работаете с ES> 6.0, это выдаст ошибку, потому что вы не можете иметь более одного типа в одном индексе.

В другой руке, я думаю, что ваш 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":""}]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...