curl -XPOST localhost:9200/index/type/_update -d '{
"query" : { "constant_score" : { "filter" : { "term" : { "counter" : 0 } } } },
"script" : "ctx._source.counter += count",
"params" : {
"count" : 4
}
}'
Мне бы очень понравилась эта функция!
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
Мне очень нужна эта функция
: +1:
В ожидании официального завершения и выпуска этой функции я упаковал запрос на перенос № 2231 как плагин:
Развлекайся.
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
: +1:: молиться:
+1
+1
Есть ли способ передать оценку запроса в качестве параметра скрипту обновления? Мне нужно обновить записи с оценками, обновленными на основе полей его дочерних элементов.
+1
+1
+1
@ scottc52 У тебя получилось? Я тоже ищу способ сделать это.
+1
@gboivin Нет. Я делаю запрос has_child и отправляю отдельный запрос на обновление, но это медленно.
жду и эту функцию ..
+1
+1
+1
+1
+1
+1
+1
Просто написал небольшой скрипт, чтобы помочь дождаться чего-то ... больше "готово к производству" ;-)
https://github.com/YannBrrd/esNodeUpdater
Не стесняйтесь комментировать / обновлять ...
+1
Есть ли официальный статус этой функции от команды разработчиков? Я не вижу никакой информации от них. Планируется ли добавить эту функцию в ядро или пользователи предпочитают использовать плагин, подобный указанному выше ?
Мы планируем вернуться к этому, основная причина, по которой мы отложили это, заключается в том, что нам нужен способ остановить существующее обновление по запросам, так как они могут быть выполнены по ошибке для большого количества данных, что вызовет проблемы. .
+1. Спасибо за обновление и работу над этим.
+1
+1
+1
+1
+1, звучит полезно
+1
+1
+1
+1
+1
+1
+1
+1
+2
+1
+10
+1
+1
+1
Вы когда-нибудь думали реализовать эту функцию с помощью двойного HTTP-вызова? Я думаю о грелках, которые дают возможность сохранить запрос, а затем выполнить его (на самом деле это не одно и то же, но это заставляет меня задуматься).
@kimchy вы говорите, что думаете, как остановить обновление, если оно было запущено на большом количестве данных по ошибке. Если вы его остановите, возможно, индексированные данные будут в недопустимом состоянии (возможно, откат возможен ...?). Возможно, лучший подход - предотвратить ошибку.
Если вам требуются два HTTP-вызова перед запуском реального массового обновления (1 для подготовки и 1 для реального запуска с идентификатором перехода между ними), а затем обработчик состояния обновления (например, обработчик импорта данных в SolR), чтобы узнать, когда запрос действительно выполнен.
Я не уверен, что все ясно, но я думаю, что это может быть решением для предотвращения ошибочных вызовов ...
+1
+1
Я также хочу проголосовать за это.
+1
@kimchy :
Возможно, вы согласны добавить ограничения для операции обновления, например _update / _query = some_conditions & size = 1000, таким образом, он избегает обновления миллиона документов - и мы, как разработчик, можем решить, запускать ли мы 1000 * 1000 обновлений для обновления миллиона записей ... Это должен возвращать количество обновленных документов, чтобы дать некоторый контроль, если требуется еще один вызов обновления.
+1
Для моего сценария (обогащение записей после поиска по другим признакам) я мог бы сделать это другим способом: сначала вставить данные в mongoDb, выполнить поиск в записях обновления ElasticSearch в Mongo, использовать mongo river, чтобы получить окончательные результаты в ElasticSearch, чтобы отобразить их в графическом интерфейсе (сборка поверх ES). Кто-нибудь сталкивался с такими сценариями? Я надеялся, что смогу пойти только по ES ... до сих пор я отказывался от использования БД в моем проекте.
Привет,
вы можете просто использовать для этого Couchbase + Elasticsearch, как Couchbase
предлагает интерфейс с Elasticsearch
Кордиэлемент,
Янн Барро
2014-02-03 seti123 [email protected] :
Для моего сценария (обогащение записей после поиска по другим показателям) я мог бы
сделайте это по-другому: сначала вставьте данные в mongoDb, выполните поиск в
ElasticSearch обновляет записи в Mongo, используйте mongo river для получения окончательных результатов
в ElasticSearch, чтобы отобразить его в графическом интерфейсе (построенном поверх ES). Есть кто-нибудь
сталкивались с такими сценариями? Я надеялся, что смогу пойти ES только так ... пока
теперь я отказался от использования БД в моем проекте.Ответьте на это письмо напрямую или просмотрите его на Gi tHubhttps: //github.com/elasticsearch/elasticsearch/issues/1607#issuecomment -33917801
.
+1
+100
+1
+1
Есть ли в ElasticSearch альтернатива, например, запускать скрипт, который выполняет действие при вставке или обновлении новых данных? Какая-то до того, как Index-Trigger мог помочь мне удалить цепочку предварительной обработки (мы сделали сейчас Message Ques с цепочкой обработки REDIS и 0MQ, прежде чем вставлять данные в ES - все это требует сетевой полосы пропускания, чтобы перетасовать данные для параллельной обработки ... )
Я хотел бы посмотреть
http: // локальный : 9200 / индекс / тип / _preprocessBeforeIndex? script = myDataAnalysisScript
http: // локальный : 9200 / индекс / тип / _preprocessBeforeUpdate? script = myDataAnalysisScript
Скрипт должен иметь возможность добавлять новые поля в текущую запись до того, как ES сохранит / проиндексирует ее (чтобы избежать двойного индексирования после изменений). Поскольку мы много работаем с node.js, скрипты должны работать на требуемом языке (в нашем случае - JavaScript).
Еще лучше, если бы мы могли определить сценарий в MAPPING для каждого типа данных вместо сгенерированных индикаторов.
Есть ли какой-либо плагин, который может запускать такие скрипты? Любая документация по использованию ES API в скриптах?
+1
+1
+1
+1
+1
+1
+1
+1
+1
Жду эту фичу ... (+1)
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
Эта функция вообще находится в стадии разработки?
Это решило бы так много проблем, с которыми сейчас практически невозможно надежно справиться на уровне приложений.
+1
+1
+1
Напомним, что с середины февраля 2013 года я упаковано, и поддерживали с тех пор, «официальный запрос выдергивать» # 2231 с помощью @martijnvg «s филиала в качестве плагина: Yakaz / elasticsearch-действия updatebyquery .
+1
+1
+1
+1
+1
Как это возможно, чтобы эта функция с февраля 2013 года все еще не была объединена в master?
+1
То же самое с комментарием
+1
У нас возникла эта проблема несколько месяцев назад (см. Мои сообщения как
Хорошая отправная точка для чтения о сходствах и различиях: https://crate.io/blog/crate_data_elasticsearch
Закрыт в пользу № 2230
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
будет обновляться по запросу support setPostFilter?
Выпуск # 12295
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
может кто-нибудь просмотреть это и оставить отзыв.
https://discuss.elastic.co/t/updatebyqueryresponse-throwing-timeout/29176
Обновление по запросу завершается ошибкой при обновлении более 20 миллионов записей.
@ Praveen82, вы используете сторонний плагин. Это не подходящее место для запроса поддержки, вы должны опубликовать это как проблему в репозитории этого плагина.
https://github.com/elastic/elasticsearch/pull/15125 реализует синтаксис, который будет немного похож на
curl -XPOST localhost:9200/index/type/_update_by_query -d '{
"query" : { "term" : { "counter" : 0 } },
"script" : {
"inline": "ctx._source.counter += count",
"params" : {
"count" : 4
}
}
}'
Причина, по которой это задерживалось
В любом случае, # 15125 и любые последующие PR - это то место, где стоит искать эту функцию.
+1
+1
+1
+1
+1
Обновление по запросу доступно в 2.3.0 и 5.0.0-alpha-1. Документы здесь .
Поддерживает ли обновление по запросу в 2.3. + Или 5. + плагин javascript?
Поддерживает ли обновление по запросу в 2.3. + Или 5. + плагин javascript?
Если ты действительно этого хочешь, конечно. В 2.3+ мы тестируем обновление за запросом на Groovy, а в 5. + мы тестируем на безболезненное. Раньше мы тестировали на groovy, и там он тоже работал. Я ожидаю, что javascript будет работать нормально.
Поддержка JS была бы довольно хорошей.
Поддержка JS была бы довольно хорошей.
Как я уже сказал, он существует, вам просто нужно установить плагин.
Проблема со всеми этими языками заключается в том, что их реализация на JVM не ориентирована должным образом для встраивания. Вот почему мы не включаем его по умолчанию.
В любом случае, если вы хотите поговорить об этом подробнее, я думаю, что более подходящим местом для этого будет Discussion.elastic.co.
Самый полезный комментарий
Обновление по запросу доступно в 2.3.0 и 5.0.0-alpha-1. Документы здесь .