Как импортировать файл JSON в ElasticSearch 6.x?

Я получил совершенно новую пустую установку Elastic Search 6.1.1, работающую на порту 9200 моего хоста CentOS7. У меня есть этот файл "es.json" с образцом данных, готовым для вставки в ES.

У меня также есть файл журнала, в котором каждая строка представляет собой фрагмент json. Я мог бы использовать оба для заполнения моей базы данных ES.

Как вставить эти и другие данные в ES?

Я не нашел хороших объяснений в документации и в Интернете. по какой-то причине в документах это не очень ясно


person Victor Ferreira    schedule 22.12.2017    source источник
comment
Я почти уверен, что вам нужно создать индекс для каждого из этих наборов данных, которые у вас есть, поскольку индексы в ES 6 теперь могут иметь только один тип отображения. Вы создали индекс?   -  person A. J. Alger    schedule 22.12.2017
comment
Взгляните на Index и Групповые API. Также подумайте, следует ли определять сопоставления или позволить ES генерировать динамические сопоставления. для вас. Вы всегда можете использовать API Reindex, если вам нужно изменить сопоставления в будущем.   -  person dcd018    schedule 22.12.2017
comment
Это помогает: stackoverflow.com/a/65213529/3357884   -  person Mahan    schedule 09.12.2020


Ответы (2)


Используйте флаг --data-binary в curl для массового импорта из файла JSON.

curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/{index}/{type}/_bulk?pretty' --data-binary @es.json

Данные могут быть отправлены на одну из конечных точек — /_bulk, /{index}/_bulk или {index}/{type}/_bulk. Когда указаны {index} или {index}/{type}, они будут использоваться по умолчанию для массовых элементов, которые не предоставляют их явно.

Content-Type: application/x-ndjson означает JSON с разделителями новой строки.

Перед импортом файла JSON вы можете определить сопоставления самостоятельно или позвольте Elasticsearch динамически создавать сопоставления во время импорт. Если вы не хотите, чтобы Elasticsearch динамически генерировал сопоставления во время импорта, обратитесь к этот документ для самостоятельного определения сопоставлений.

Ссылки:

person Bless    schedule 22.12.2017
comment
URL указан в ответе (localhost:9200/{index}/{type}/_bulk?pretty). Замените {index} и {type} нужными значениями. Например: localhost:9200/my_index/my_type/_bulk?pretty - person Bless; 23.12.2017

Вы можете использовать elasticsearch_loader для загрузки файлов json в elasticsearch (2.X, 5.X, 6.X).

Вы можете скачать его с помощью pip:

pip install elasticsearch-loader

И тогда вы сможете загружать json-файлы в elasticsearch, выполнив:

elasticsearch_loader --index incidents --type incident json file1.json file2.json

Отказ от ответственности: я являюсь автором elasticsearch_loader

person MosheZada    schedule 17.03.2018