본문 바로가기

elasticsearch

(9)
[elasticsearch] document의 특정 필드값 수정하기 - POST API/python 엘라스틱 서치에서 특정 document의 특정 필드의 값을 변경하고 싶다면 아래와 같은 API를 통해서 수정할 수 있다. document update API POST 인덱스명/_update/다큐먼트ID { "doc": { "수정할 필드1":"수정하고자 하는 값", "수정할 필드2":"수정하고자 하는 값" } } python elasticsearch 모듈을 통한 수정 from elasticsearch import Elasticsearch es = Elasticsearch([{'host': '엘라스틱 서치 IP', 'port':9200}], http_auth=('계정', '패스워드')) es.update(index='인덱스명', id = 다큐먼트ID, body = {"doc":{"수정하고자 하는 필드1":"..
[elaticsearch] 특정 시간 기준으로 document들 삭제하기 인덱스에서 특정 시간 기준으로 document를 지우고 싶다면, _delete_by_query에서 range에 시간 조건을 추가해서 지울 수 있다. 예제를 통해서 살펴보자. 만약 user라는 index에서 @timestamp가 2020년 7월 1일 이후인 document를 지우고 싶다면 아래와 같이 쿼리를 사용한다. POST user/_delete_by_query { "query":{ "range":{ "@timestamp":{ "gte" : "2020-07-01T00:00:00+09:00"} } } } range에서 gte는 greater than or equal로 같거나 큰 값을 뜻한다. 범위 조건에 대한 내용은 아래와 같다. 파라미터 의미 gt 크다 (greater than) lt 작다 (less ..
[elasticsearch] 엘라스틱서치 리인덱싱(reindexing) - 같은서버, 다른서버 엘라스틱서치에서는 인덱스의 이름을 바꾸거나, 속성을 바꾸려면 리인덱싱(reindexing)이라는 방법을 통해서 인덱스를 관리해야 한다. 이러한 리인덱싱 작업은 엘라스틱서치를 사용할때 꽤나 자주 발생한다. 리인덱싱은 같은 엘라스틱서치 내에서도 할 수 있지만, 다른 엘라스틱 서치에 있는 데이터를 가져와서 리인덱싱할 수도 있다. 이번 포스팅에서는 그 두가지 방법을 소개한다. 같은 elasticsearch 내에서 reindexing Kibana Dev Tools에서 POST _reindex?wait_for_completion=true { "source": { "index": "machine_log" }, "dest": { "index": "another_machine_log" } } curl 명령어 curl -..
[elasticsearch] 샤드 개수 설정하기 엘라스틱서치에서 샤드를 설정하기 위해서는 인덱스를 생성과 동시에 설정해주어야 한다. 만약 이미 생성된 인덱스에 샤드의 갯수를 바꾸고 싶다면, 리인덱싱하는 방법을 통해 샤드의 갯수를 수정하는 방법밖에 없다. 그러니, 인덱스를 생성할 때 샤드의 갯수를 신중하게 고려하여 설정하여야 한다. 샤드 갯수를 설정하는 방법은 인덱스를 생성할 때 추가적으로 index.number_of_shards의 값을 설정해준다. PUT index명 { .... "settings": { "number_of_shards": 8, "number_of_replicas": 1 } .... } 위 예제에서는 샤드의 갯수를 8개로 설정했다. 이는 환경에 따라 다르게 설정하면 된다. 보통 노드수, 코어수를 고려하여 실험적으로 저 값을 정한다. n..