일레스틱서치 3

[ElasticSearch] _update_by_query (update by query)

특정 쿼리에 해당하는 데이터들을 한번에 update 하는 쿼리 index_name/_update_by_query [POST] { "script":{ "source":"ctx._source.USER_LOCATION = params.location", "params":{ "location":"경기도" } }, "query":{ "term":{ "USER_LOCATION":"서울특별시" } } } index_name에 있는 document 들 중에 USER_LOCATION 값이 서울특별시 인 데이터들을 경기도로 변경 주의할점!!! update 시킬 데이터가 지나치게 많을 경우 처리하는 개수를 정할 수 있는지 모르겠는데 일정량씩 처리를 해서 오래 걸릴 수 있으니 생각하고 사용해야함 전에 데이터 몇만개 짜리를 _..

ElasticSearch 2019.07.22

[Node] node를 이용한 ElasticSearch에 데이터 넣기

기본적으로 elasticsearch라는 모듈이 설치 되어 있어야함 없다면 설치 npm install elasticsearch var elasticsearch= require('elasticsearch'); var els_id = "test"; var els_pw = "test": var els_ip = "192.168.0.222"; var client = new elasticsearch.Client({ hosts: ["https://" + els_id + ":" + els_pw + "@" + els_ip + ":9200"] }); function run () { client.index({ index: 'indexName', type: 'doc', id: '_id', //_id값이 없으면 입력된 값으로 i..

Node.js 2019.06.05

[ElasticSearch] aggs top_hits (aggregation 중복제거 개념?)

이레스틱 쿼리로 데이터를 불러와 화면단에 출력중에 한가지 요청 사항 들어온게 특정 조건하에 중복되는 데이터들이 있다면 화면에 1개만 출력해달라는 요청사항이 들어와있어서 찾게된 쿼리인데 aggs 옵션중에 top_hits라는게 있었다. 난 aggs로는 통계 형식의 집계만 가능한 줄 알았는데 hits도 출력이 가능했다. { "size": 0, "aggs": { "dedup": { "terms": { "field": "type" }, "aggs": { "dedup_docs": { "top_hits": { "size": 1 } } } } } } 이런식의 쿼리를 사용하면 해당 인덱스 내에서 필드명이 type 인 데이터들 중에 값이 같으면 1개의 hits 데이터를 보여준다. top_hits 안에 size 개수를 변경..

ElasticSearch 2019.06.05