Мне нужно удалить поле во всех документах, индексированных в Elasticsearch. Как мне это сделать. Будет ли любой из запросов на удаление помочь мне в этом.Удалить поле из документа Elasticsearch
ответ
Что @backtrack сказал верно, но есть очень удобный способ сделать это в Elasticsearch. Elasticsearch абстрагирует внутреннюю сложность удаления. Вы должны использовать обновление API для достижения этой цели -
curl -XPOST 'localhost:9200/test/type1/1/_update' -d '{
"script" : "ctx._source.remove(\"name_of_field\")"
}'
Вы можете найти более подробную документацию here.
Примечание: В качестве упругого поиска 6 вы должны включать в себя содержание заголовок типа:
-H 'Content-Type: application/json'
Какова эффективность этого, если у вас есть миллиард документов с этим полем? –
Фактический документ будет удален, а новый будет добавлен для каждого из таких изменений. –
Уведомление для ElasticSearch 5.0: вы должны использовать именованный параметр вместо жестко заданного имени. Параметры быстрее, и они не будут нарушать лимит компиляции скрипта. См. [Документация] (https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting-using.html#prefer-params). –
По умолчанию это невозможно, потому что сейчас Lucene этого не поддерживает. В основном вы можете только поместить или удалить целые документы Lucene из индексов Lucene.
- Получить первую версию дока
- удалить поле
- толчка новой версии вашего документа
Elasticsearch добавляемые update_by_query
в 2.3. Этот экспериментальный интерфейс позволяет вам выполнить обновление по всем документам, соответствующим запросу.
Внутренне elasticsearch выполняет сканирование/прокрутку для сбора партий документов, а затем обновляет их, как интерфейс массового обновления. Это быстрее, чем делать это вручную с помощью собственного интерфейса сканирования/прокрутки из-за отсутствия накладных расходов на сеть и сериализации. Каждая запись должна быть загружена в память, изменена, а затем записана.
Вчера я удалил большое поле из своего кластера ES. Я видел устойчивую пропускную способность 10 000 записей в секунду во время update_by_query, ограниченную процессором, а не IO.
Посмотрите на установку conflict=proceed
, если в кластере есть другой трафик обновления, или вся работа прекратится, когда он достигнет ConflictError
, когда одна из записей обновляется под одной из партий.
Аналогично, установка wait_for_completion=false
приведет к тому, что update_by_query будет запущен через интерфейс tasks. В противном случае задание прекратится, если соединение будет закрыто.
URL:
http://localhost:9200/type/_update_by_query?wait_for_completion=false&conflict=proceed
POST тело:
{
"script": ctx._source.remove("name_of_field"),
"query": {
"bool": {
"must": [
{
"exists": {
"field": "name_of_field"
}
}
]
}
}
}
По Elasticsearch 1.43, рядный groovy scripting is disabled by default. Вам нужно включить его для встроенного скрипта, подобного этому, путем добавления script.inline: true
в ваш файл конфигурации.
Или загрузите groovy в качестве скрипта и используйте формат "script": { "file": "scriptname", "lang": "groovy"}
.
Я еще не знаю, как вернуть поле field_data, используемое этим полем. Надеясь, что перезапуск перезагрузки приведет к перезагрузке ординалов. – spazm
Телу нужна была небольшая модификация, но в остальном это прекрасно работает. Мне пришлось обернуть скрипт в объект JSON, возможно, потому, что API немного изменился. – Peter
- 1. удалить поле для документа на elasticsearch
- 2. Как удалить поле из документа
- 3. как удалить поле свойства документа в Elasticsearch с помощью Java
- 4. Как удалить поле из документа Word?
- 5. Как изменить поле источника документа Elasticsearch
- 6. Удалить только поле в elasticsearch using elastic4s
- 7. Elasticsearch 5 - поле возврата из документа при вставке вставки
- 8. Elasticsearch: удалить/обновить поле внутри вложенного объекта
- 9. Как удалить поле из документа, которое соответствует шаблону в elasticsearch с использованием Java?
- 10. Как снять поле из документа
- 11. Удалить данные из elasticsearch
- 12. Удалить поддокумент из документа
- 13. Удалить строки из документа
- 14. Удалить объект из документа
- 15. elasticsearch запрос вложенного документа
- 16. Logstash Обновление документа в elasticsearch
- 17. Elasticsearch Уникальное поле
- 18. Удалить «NaN» из HTML-документа
- 19. Внутренность удаления документа в elasticsearch
- 20. Удалить поле документа перед сохранением в CouchDB?
- 21. Удалить текстовое поле документа MS Word
- 22. Elastica или ElasticSearch удалить поле из всех документов
- 23. Можете ли вы удалить поле из документа в индекс Solr?
- 24. как изменить поле свойства документа в Elasticsearch с помощью Java
- 25. ElasticSearch получение последней версии документа
- 26. Запрос вложенного документа Elasticsearch
- 27. Создание документа в elasticsearch
- 28. Elasticsearch get_parent исходные поля из дочернего документа
- 29. Mongoid - получить поле из документа
- 30. ElasticSearch - Скопления с деталями документа
По умолчанию это невозможно, потому что сейчас Lucene не поддерживает . В основном вы можете только поместить или удалить целые документы Lucene от Показатели Lucene.1 Получите первую версию своего документа 2 удалите поле 3 нажмите эту новую версию своего документа. – Backtrack