У меня есть сценарий, в котором я храню URL-адреса в документах в определенном индексе в Elasticsearch. Иногда я получаю существующий URL несколько раз. Я хочу использовать Elasticsearch для увеличения количества раз, когда я сталкиваюсь с определенным URL. Это можно выполнить с помощью API обновлений с помощью скриптов. Однако это иногда кажется медленным и сложным.Ускорение обновления документа в Elasticsearch
Есть ли способ в Elasticsearch увеличить документ при обновлении существующего документа? Если да, то я думаю, что могу использовать это для измерения хитов, так как я могу увеличивать каждый раз, когда сталкиваюсь с существующим URL-адресом, и это решит все мои проблемы.
Так что это может сработать, но я не уверен. Надо попробовать. Но когда я использовал счетчики в тех же документах, что и URL, я заметил много конфликтов версий. Моя настройка состоит в том, что у меня есть 3 узла с двумя узлами данных и один узел без данных, и я пишу на не-узел данных (который также является главным). Причина конфликтов версий может заключаться в том, что узел не-данных действует как LB в кластере, и когда встречаются два URL-адреса, мы пытаемся увеличить счетчик, но это может происходить одновременно на двух разных узлах, что приводит к конфликтам версий. Наша скорость индексирования/обновления составляет около 8 К/сек. – vaidik
Обновления документа происходят только на основном осколке, поэтому на самом деле не важно, сколько узлов находится в вашем кластере или куда вы отправляете запрос. Запрос обновления всегда будет перенаправлен на единственный первичный осколок, который содержит документ. Конфликт версий связан с тем, что ES использует оптимистичный контроль параллелизма, и два обновления гоняются друг за другом на одном и том же осколке. Увеличьте свой «retry_on_conflict», и обновления в конечном итоге будут «прилипать». – Zach