Python에서 Elasticsearch update_by_query를 안전하게 사용하는 방법
update_by_query Elasticsearch에 저장된 document의 값을 일괄적으로 수정할 때 update_by_query를 사용하게 됩니다. 아래는 update_by_query를 사용해서 document의 field 이름을 변경하는 예시입니다.
update_by_query Elasticsearch에 저장된 document의 값을 일괄적으로 수정할 때 update_by_query를 사용하게 됩니다. 아래는 update_by_query를 사용해서 document의 field 이름을 변경하는 예시입니다.
Elasticsearch에서 특정 키워드로 검색할 때 조건에 따라 적절한 방법을 사용해야합니다. 아래에서 검색할 때 대표적으로 많이 사용되는 term, match, match_phrase, string_query을 설명하겠습니다.
특정 단어 제거하기
Tag Cloud에서 일정 횟수 이상 등장한 단어만 보여주거나, 일정 횟수 이하의 단어는 보여주지 않고 싶을 때 Kibana에서 관련 설정을 UI에서 제공하지 않기 때문에 직접 설정을 추가해야합니다.
Elasticsearch에는 Scroll API를 사용하면 대량의 데이터를 조회할 수 있는데, 이 부분을 python에서 elasticsearch.helpers.scan을 이용해 사용 가능합니다.
Elasticsearch 기능을 테스트하면서 reindex를 종종 사용하고있는데, 원본 index의 document가 아무래도 많다보니까 그냥 reindex를 하면 불필요하게 많은 document가 복제되었습니다. 이 부분을 reindex 시 query로 filtering해서 일부...
Elasticsearch에서 데이터를 검색하면 최대 10,000개까지 검색이 되는 것을 볼 수 있습니다. 10,000개 이상 검색이 필요한 경우에는 Scroll API(공식 문서)를 사용하는게 맞지만, 성능 상관없이 검색만 필요한 경우 아래와 같이 limit를 수정하면 10,000...
Elasticsearch에서 그냥 search를 하면 analyzer가 적용된 내용을 확인할 수 없습니다. 이때 termvectors로 확인이 가능합니다.
Elasticsearch index를 그대로 복사할 때 reindex를 사용합니다.
Kibana에서 tag cloud로 시각화를 진행할 때 nori와 같은 analyzer를 많이 이용합니다. 실사용 하다보면 tokenizing되지 말아야할 단어가 생기거나 불필요한 단어가 생기게 됩니다. 아래 시각화 예시를 보면, 최근, 코로나와 같은 단어는 매 번 자주 등장하는 ...
Elasticsearch에 데이터를 적재할 때 동일한 id가 존재하면 update하고 없으면 insert하고 싶을 때 upsert를 사용하면 가능합니다. update query에 "doc_as_upsert": true를 입력하면 됩니다.
Kibana에서는 dashboard의 시각화에 사용된 index를 변경하는 것이 어렵습니다. 이 때문에 초기 구축 단계에서 dashboard를 다 만들었는데 index 명을 변경하게되면 dashboard를 처음부터 다시 구축하는 참사가 일어날 수 있습니다.
7.x 이하 버전을 사용할 때, index에 새로 추가한 field로 Visualize(시각화)를 추가하려하면 추가된 field가 보이지 않습니다. 이는 index pattern의 mapping에 반영되지 않았기 때문인데, 아래와 같이 index pattern으로 가서 refres...
Elasticsearch에서 document update 시 아래 그림처럼 업데이트할 document를 쓰되 기존 document를 바로 삭제하지는 않습니다.
Query
ELK Stack 마지막 구축 과정으로 Word Cloud 시각화를 진행해보겠습니다. 데이터로 사용한 기사의 내용에서 사용된 단어의 빈도로 시각화하기 위해서는 전부 단어로 tokenizing 해야합니다. 이를 위해 형태소 분석기 플러그인을 사용해야합니다.
윈도우에서 WSL을 사용하거나 분산 서버 환경을 구축했을 경우, elasticsearch에 접근하기 위해서는 network 설정이 필요(default host가 127.0.0.1이기 때문)합니다. 따라서 외부에서 접근 가능한 IP로 변경이 필요한데, IP를 변경하면 producti...
앞의 포스트에서는 편의를 위해 security 옵션을 비활성화하고 진행했는데, 추후 실사용에서는 반드시 적용해야하는 부분입니다. 그리고 Elastic Stack 8.0이 release되면서 빠르게 8.1이 release됐고, major 변경에 따른 필수 설정이 많이 변경된 것으로 ...
이번엔 Kibana Dashboard를 이용해서 수집한 데이터를 시각화해보겠습니다.
이번엔 Logstash를 이용해서 Elasticsearch에 데이터를 적재해보겠습니다.
ELK Stack이란