Elasticsearch Удалить поле

Elasticsearch Udalit Pole



«При работе с индексами Elasticearch вы можете столкнуться с ситуацией, когда вам нужно удалить поле из существующего документа. К сожалению, Elasticsearch не предоставляет собственный запрос, который мы можем использовать для выполнения указанного действия.

Однако мы можем использовать API обновления документа и передать скрипт, который позволит нам удалить поле на основе его имени».







ПРИМЕЧАНИЕ : Этот процесс требует от вас базовых знаний скриптов Elasticsearch и API обновления документов. Не стесняйтесь изучать документы или наши руководства по этой теме, чтобы узнать больше.



Давайте углубимся.



Проверить, существует ли документ

Перед удалением поля из определенного документа хорошо убедиться, что целевой документ существует в индексе.





Мы можем использовать API поиска для получения целевого документа.

Например, предположим, что у нас есть индекс kibana_sample_logs_data. Мы можем искать в индексе документ, содержащий определенный IP-адрес.



ПРИМЕЧАНИЕ : приведенный выше пример используется только для иллюстрации. Вы можете использовать различные методы, чтобы проверить, доступен ли конкретный документ в индексе.

curl -XGET 'http://localhost:9200/kibana_sample_data_logs/_search' -H 'kbn-xsrf: отчетность' -H 'Content-Type: application/json' -d'
{
'размер': 0,
'запрос': {'совпадение': {
'ip': '171.24.97.162'
}}
}'

Результирующий вывод:

{
'взял': 3,
'timed_out': ложь,
'_осколки': {
'всего': 1,
'успешно': 1,
'пропущено': 0,
'неудачно': 0
},
'хиты': {
'общий': {
'значение': 17,
'отношение': 'экв'
},
'max_score': ноль,
'хиты': []
}

}

Затем простой сценарий может удалить целевое поле из документа. Начните с входа в консоль Kibana и выполните команду:

curl -XPOST 'http://localhost:9200/kibana_sample_data_logs/_update/5pA49IIBkTjaZ6TtsiB5' -H 'kbn-xsrf: отчетность' -H 'Content-Type: application/json' -d'
{
'script': 'ctx._source.remove('\''ip'\'')'
}'

Приведенный выше запрос использует безболезненный контекстный скрипт для обновления документа и удаления поля «ip» с указанным идентификатором.

Выход:

{
'_index': 'kibana_sample_data_logs',
'_id': '5pA49IIBkTjaZ6TtsiB5',
'_версия': 2,
'результат': 'обновлено',
'_осколки': {
'всего': 2,
'успешно': 2,
'неудачно': 0
},
'_seq_no': 14074,
'_primary_term': 1
}

Как только документ будет обновлен, вы можете проверить, выполнив запрос.:

curl -XGET 'http://localhost:9200/kibana_sample_data_logs/_doc/5pA49IIBkTjaZ6TtsiB5' -H 'kbn-xsrf: отчетность'

Запрос выше должен вернуть данные, хранящиеся в документе с указанным идентификатором.

Мы можем убедиться, что поля IP больше нет в документе.

Вывод

В этой статье вы узнали, как использовать возможности сценариев Elasticsearch для удаления поля из существующего документа.

Спасибо за чтение!!