Когда я подключаю Elasticsearch к моей базе данных MySQL, используя этот JDBC.Elasticsearch, вставляющий повторяющиеся данные?
Я хочу, чтобы он регулярно выбирал, чтобы получать последние изменения из базы данных, но похоже, что из журналов он копирует все данные на каждой итерации, а не только самые последние изменения. Хотя, когда я выполняю поиск с использованием REST API, я не вижу никаких дубликатов. Это нормально?
Журнал говорит, что это каждая минута (с rows
увеличивается с ~ 3000 каждый раз):
[INFO] [river.jdbc.RiverMetrics] трубопровод org.xbib.elasticsearch.plugin.jdbc.RiverPipeline @ 273cf2ca complete: river jdbc/items metrics: 24745 rows, 61.24885239965816 mean, (56.52859885706843 11.685682148116433 3.916887460538012), показатели ingest: прошло 0 секунд, 291,25 Кбайт байт, 12,0 байт, 1,061 МБ/с [2015-05-20 22 : 22: 15,607] [INFO] [cluster.routing.allocation.decider] [Гидеон] водяной знак с низким диском [15%] превышен на [6TQNFDctRSaYVFyKjQahJA] [Gideon] бесплатно: 26.6gb [11.4%], реплики не будут назначены этот узел
Это то, что я использую для запуска JDBC
curl -XPUT 'localhost:9200/_river/items/_meta' -d '{
"type" : "jdbc",
"jdbc" : {
"url" : "jdbc:mysql://localhost:3306/mydb",
"user" : "root",
"password" : "123",
"sql" : "select items.id as _id from items",
"index": "items",
"type": "item",
"schedule" : "0 0-59 0-23 ? * *"
}
}'
Это нормальное поведение?
Однако река JDBC является [будущим доказательством] (https://github.com/jprante/elasticsearch-jdbc#this-plugin-is-future-proof) в соответствии с ее авторами, поскольку она может использоваться как автономная модуль, который является одним из способов продвижения вперед в соответствии с статьей «устаревших рек». – Val
Я бы добавил, что запросы Elasticsearch являются идемпотентными, поэтому нет дубликатов, даже если вы индексируете один и тот же документ сто раз –