Я хочу индексировать 1 миллиард записей. каждая запись имеет 2 атрибута (атрибут1 и атрибут2). Каждая запись, имеющая такое же значение в атрибуте1, должна быть слиянием. например, у меня есть две записиПоиск после индексирования в ElasticSearch
attribute1 attribute2
1 4
1 6
мой упругий документ должен быть
{
"attribute1": "1"
"attribute2": "4,6"
}
из-за огромное количество данных, я должен прочитать большую часть (около 1000 записей) и объединить их на основе выше (в памяти), а затем искать их в ElasticSearch и объединить их с результатом поиска, а затем индексировать/переиндексировать их. Таким образом, я должен искать и индексировать соответственно. Я реализовал это правило, но в некоторых случаях Elastic не возвращает все результаты, а некоторые документы были проиндексированы дублирующимся образом. после каждого индекса I Обновите ElasticSearch, чтобы он был готов к следующему поиску. но в некоторых случаях это не работает. мои настройки индекса следует, как:
{
"test_index": {
"settings": {
"index": {
"refresh_interval": "-1",
"translog": {
"flush_threshold_size": "1g"
},
"max_result_window": "1000000",
"creation_date": "1464577964635",
"store": {
"throttle": {
"type": "merge"
}
}
},
"number_of_replicas": "0",
"uuid": "TZOse2tLRqGk-vHRMGc2GQ",
"version": {
"created": "2030199"
},
"warmer": {
"enabled": "false"
},
"indices": {
"memory": {
"index_buffer_size": "40%"
}
},
"number_of_shards": "5",
"merge": {
"policy": {
"max_merge_size": "2g"
}
}
}
}
как я могу решить эту проблему?
Есть ли другие настройки для обработки этой ситуации?
мой вопрос, почему иногда, когда я индексирую данные и обновляю эластичные, и поиск на нем сразу, эластичный не возвращает результат? – Ghasem
Как вы обновляете свой индекс? Я вижу, что ваш параметр refresh_interval равен -1, что означает «никогда не обновлять». – Val
после объемного индексирования. Я вызываю обновление с помощью API. – Ghasem