Извлечь базу данных mysql в эластичный поиск

В моем проекте я используюasticsearch, и мое требование переносить большие данные MySQL в Elasticsearch с помощью плагина Elasticsearch JDBC River. Мне нужно синхронизировать таблицу mysql сasticsearch, поэтому я создаю отображение для индекса реки jdbc.

curl -XPOST http://localhost:9200/city -d '
{
"mappings" : {
"city_type": {
"properties" : {
"domain" : {
"type" : "multi_field",
"fields" : {
"domain" : {
"type" : "string",
"index" : "analyzed"},
"exact" : {
"type" : "string",
"index" : "not_analyzed"}
}
},
"sent_date" : {
"type" : "date",
"format" : "dateOptionalTime"}
}
}
}
}'

После создания сопоставления вasticsearch. Я хочу загрузить данные таблицы MySQL в него. поэтому я использую следующую команду.

curl -XPUT 'localhost:9200/river/city/_meta?pretty' -d '{
"type" : "jdbc",
"jdbc" : {
"url" : "jdbc:mysql://localhost:3306/test",
"user" : "root",
"password" : "root",
"sql" : "select id as _id,id as domain from city;",
"strategy":"oneshot"},
"index" :{
"index" : "city",
"type" : "city_type",
"bulk_size":500
}
}'

Эти запросы успешно выполняются, и после этого запроса, когда я запускаю команду, чтобы найти данные вasticsearch пуст.

http://localhost:9200/river/_search?pretty&q=*

Пожалуйста, проверьте ответ на вышеуказанный запрос Вот. Почему данные не отображаются в запросеasticsearch, пожалуйста, помогите.

1

Решение

Река устарела https://github.com/elastic/elasticsearch/issues/10345 Кстати.

Я очень рекомендую jprante jdbc import, который является автономным java-сервером, позволяющим выполнять необходимые операции. https://github.com/jprante/elasticsearch-jdbc. Это не совсем река, как вы ее определили.

По поводу вашего вопроса, не могли бы вы попробовать HTTP: // локальный: 9200 / _search довольно&д =*? С вашим синтаксисом вы на самом деле ищете данные в индексной реке. Вы должны посмотреть на весь индекс с запросом, который я написал или в индексе города: HTTP: // локальный: 9200 / город / city_type / _search довольно&д =*

0

Другие решения

Если бы я был на вашем месте, я бы использовал logstash для передачи данных из MySQL в Elastic. River давно устарела, как уже упоминалось @Artholl.

Увидеть https://www.elastic.co/blog/logstash-jdbc-input-plugin

0

По вопросам рекламы [email protected]