Импортировать csv в elasticsearch
Я занимаюсь учебным пособием по созданию "упругих поисков". К сожалению, этот учебник не охватывает первый шаг, который импортирует базу данных csv
в elasticsearch.
Я googled найти решение, но это не работает к сожалению. Вот что я хочу достичь и что у меня есть:
У меня есть файл с данными, которые я хочу импортировать (упрощенными)
id,title
10,Homer Night Out
12,Krusty Gets Busted
Я хотел бы импортировать его с помощью logstash
. После исследования через Интернет я получаю следующую конфигурацию:
input {
file {
path => ["simpsons_episodes.csv"]
start_position => "beginning"
}
}
filter {
csv {
columns => [
"id",
"title"
]
}
}
output {
stdout { codec => rubydebug }
elasticsearch {
action => "index"
hosts => ["127.0.0.1:9200"]
index => "simpsons"
document_type => "episode"
workers => 1
}
}
У меня есть проблема с указанием типа документа, поэтому, когда данные импортируются, и я перехожу к http://localhost:9200/simpsons/episode/10 Я ожидаю увидеть результат с эпизодом 10.
Ответы
Ответ 1
Хорошая работа, вы почти там, вам не хватает идентификатор документа. Вам нужно изменить свой вывод elasticsearch
следующим образом:
elasticsearch {
action => "index"
hosts => ["127.0.0.1:9200"]
index => "simpsons"
document_type => "episode"
document_id => "%{id}" <---- add this line
workers => 1
}
После этого вы сможете запросить эпизод с id 10
GET http://localhost:9200/simpsons/episode/10
Ответ 2
Я автор moshe/asticsearch_loader
Я написал ESL для этой конкретной проблемы.
Вы можете скачать его с помощью pip:
pip install elasticsearch-loader
И тогда вы сможете загрузить CSV файлы вasticsearch, выполнив:
elasticsearch_loader --index incidents --type incident csv file1.csv
Кроме того, вы можете использовать пользовательский файл идентификатора, добавив --id-field=document_id
в командную строку