Каков наилучший и лучший способ вставить данные JSON в эластичный поиск - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть много файлов json (около 200 в день, каждый файл содержит более 300 000 строк), которые мне нужно вставить в индекс эластичного поиска.

Я ищу способ сказатьполучите каждый json-файл в папке и поместите каждую строку в индекс, отображающий правильные поля.И я должен сделать это быстро (лучше всего будет менее 30 мин.)

Можно ли «индустриализировать» этот процесс с помощью filebeat / logstash или другого?

Я попробовал простую группувставка с использованиемasticsearch .net и nest api, но это занимает слишком много раз (около 3/4 мин на файл)

Я провел некоторый тест с filebeat, но все, чего я добился, это вставить данные json вполе сообщения журнала .. В моем случае это не то, что я ищу.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Спасибо, я использовал json decode в filebeat, и он работает.Теперь я могу видеть свои данные (имя, единицу измерения, значение, гео и время), но я также вижу все остальные поля журналов, которые мне не нужны в моем отображении.enter image description here Кроме того, геоданные не распознаются как тип географической точки.Есть что-то, что можно добавить в конфиге?

Я пытался создать свой собственный шаблон, но, похоже, filebeat его не принимает.Кстати: основная масса с filebeat:

20 json файлов с общим количеством строк около 5 миллионов занимает 19 минут !!Это нормально?для меня это выглядит очень-очень медленно ..

Те же файлы с массовой вставкой в ​​c # занимают около 3/4 минуты.

0 голосов
/ 19 сентября 2019

На самом деле, Filebeat может декодировать строки JSON: Документ

Если вы работаете в Unix (cygwin), вы можете использовать простую команду для добавления строк JSON из файла в индекс:

$ cat books.json
{"title":"Book #1", "author":"Author #1"}
{"title":"Book #2", "author":"Author #2"}
{"title":"Book #3", "author":"Author #3"}
{"title":"Book #4", "author":"Author #4"}
{"title":"Book #5", "author":"Author #5"}

$ sed -e '/^..*/i {"index":{}}' -e '$a\\n' books.json | curl 'http://localhost:9200/books/_bulk?pretty&filter_path=off' --data-binary @- -H 'Content-Type: application/json' -s
{ }

ES автоматически генерирует _id для каждого документа.

...