Elasticsearch 제거 필드

Elasticsearch Jegeo Pildeu



“Elasticarch 인덱스로 작업할 때 기존 문서에서 필드를 제거해야 하는 경우가 있습니다. 안타깝게도 Elasticsearch는 해당 작업을 수행하는 데 사용할 수 있는 기본 요청을 제공하지 않습니다.

그러나 문서 업데이트 API를 사용하고 이름을 기반으로 필드를 제거할 수 있는 스크립트를 전달할 수 있습니다.'







노트 : 이 프로세스를 수행하려면 Elasticsearch 스크립팅 및 문서 업데이트 API에 대한 기본 지식이 필요합니다. 더 자세히 알아보려면 해당 주제에 대한 문서 또는 자습서를 자유롭게 탐색하십시오.



뛰어들어봅시다.



문서가 있는지 확인

특정 문서에서 필드를 제거하기 전에 대상 문서가 인덱스 내에 있는지 확인하는 것이 좋습니다.





검색 API를 사용하여 대상 문서를 가져올 수 있습니다.

예를 들어 kibana_sample_logs_data 인덱스가 있다고 가정합니다. 특정 IP를 포함하는 문서에 대한 색인을 검색할 수 있습니다.



노트 : 위의 예는 설명을 위한 것입니다. 다양한 방법을 사용하여 색인에서 특정 문서를 사용할 수 있는지 확인할 수 있습니다.

curl -XGET 'http://localhost:9200/kibana_sample_data_logs/_search' -H 'kbn-xsrf: 보고' -H '콘텐츠 유형: 애플리케이션/json' -d'
{
'크기': 0,
'쿼리': {'일치': {
'ip': '171.24.97.162'
}}
}'

결과 출력:

{
'잡았다': 3,
'timed_out': 거짓,
'_shards': {
'총': 1,
'성공': 1,
'건너뜀': 0,
'실패': 0
},
'적중': {
'총': {
'값': 17,
'관계': 'eq'
},
'max_score': null,
'히트': []
}

}

다음으로 간단한 스크립트는 문서에서 대상 필드를 제거할 수 있습니다. Kibana 콘솔에 로그인하여 시작하고 다음 명령을 실행합니다.

curl -XPOST 'http://localhost:9200/kibana_sample_data_logs/_update/5pA49IIBkTjaZ6TtsiB5' -H 'kbn-xsrf: 보고' -H '콘텐츠 유형: 응용 프로그램/json' -d'
{
'스크립트': 'ctx._source.remove('\''ip'\'')'
}'

위의 요청은 고통 없는 컨텍스트 스크립트를 사용하여 문서를 업데이트하고 지정된 ID로 'ip' 필드를 제거합니다.

산출:

{
'_index': 'kibana_sample_data_logs',
'_id': '5pA49IIBkTjaZ6TtsiB5',
'_버전': 2,
'결과': '업데이트됨',
'_shards': {
'총': 2,
'성공': 2,
'실패': 0
},
'_seq_no': 14074,
'_primary_term': 1
}

문서가 업데이트되면 쿼리를 실행하여 확인할 수 있습니다.:

curl -XGET 'http://localhost:9200/kibana_sample_data_logs/_doc/5pA49IIBkTjaZ6TtsiB5' -H 'kbn-xsrf: 보고'

위의 요청은 지정된 ID로 문서에 저장된 데이터를 반환해야 합니다.

IP 필드가 더 이상 문서에 없는지 확인할 수 있습니다.

결론

이 기사에서는 Elasticsearch 스크립팅 기능을 사용하여 기존 문서에서 필드를 제거하는 방법을 배웠습니다.

읽어 주셔서 감사합니다!!