Elasticsearch8 Java Client를 이용한 Elasticsearch 쿼리 Spring boot 에서 Java Client를 이용하여 Elasticsearch 쿼리를 작성해볼려고 한다. GPT에 물어봤는데도 이상한 답을 줘서 혼자 이것저것 해봤는데 이게 맞는 방법인지 잘 모르겠다. Elasticsearch 클러스터 구성은 다른 포스트에서 작성했으니 이미 클러스터가 있다는 가정하에 작성해 보겠다. 우선 의존성을 추가하자.implementation 'co.elastic.clients:elasticsearch-java:8.14.3'버전은 사용하고 있는 elasticsearch 버전에 맞춰 변경해야한다. Elasticsearch 8.0 버전 이상 부터는 java clinet의 사용이 권장된다. High level rest client 는 7.15 버전부터 deprecated로 지정되었.. 2025. 3. 29. 엘라스틱서치 클러스터 구성 엘라스틱서치를 공부하고 클러스터를 구성해 봤다. 책을 참고하며 진행하였는데 쉽지 않았다.1. 노드 설정과 노드 역할클러스터 구성 전 엘라스틱서치의 노드 역할에 대해 알아보자.마스터 후보 : 노드의 역할에 master를 지정하면 해당 노드는 마스터 후보 노드가 된다. 마스터 후보 노드 중 선거를 통해 마스터 노드가 선출된다.클러스터 상태 관리 : 클러스터의 상태(노드 추가/제거, 인덱스 생성/삭제 등)를 관리인덱스 생성 및 삭제 : 인덱스 생성 및 삭제 담당샤드 할당 :샤드를 클러스터 내 데이터 노드에 할당데이터 노드 : 실제 데이터를 들고 있는 노드다. CRUD, 검색, 집계와 같이 데이터와 관련된 작업을 수행한다.데이터 저장 : 실제 데이터(문서)를 저장, 샤드를 보유CRUD 작업 : 데이터 노드는 문.. 2024. 7. 25. 엘라스틱서치 데이터 다루기 part 4 집계 4.1 집계 기본집계의 대상을 추려낼 검색 조건을 검색 API에 담은 뒤 집계 조건을 추가해서 호출한다. GET kibana_sample_data_ecommerce/_search{ "size": 0, "query": { "term": { "currency": { "value": "EUR" } } }, "aggs": { "sum-test": { "sum": { "field": "taxless_total_price" } } }}size를 0으로 하면 검색에 매칭된 문서가 무엇인지 받을 수 없다. 하지만 이와 상관없이 검색 조건에 매치되는 모든 문서는 집계 작업에 사용된다. 각 샤드에서 수행한 검색 결과에서 상위 문서의.. 2024. 7. 22. 엘라스틱서치 데이터 다루기 part 3 검색 3. 검색 API이번 포스트에서는 주요 검색 쿼리, 쿼리 문맥과 필터 문맥, 검색 결과 정렬, 페이지네이션에 대해 작성한다.3.1 검색 대상 지정GET [인덱스 이름]/_searchPOST [인덱스 이름]/_searchGET _searchPOST _searchGET과 POST 중 무엇을 사용해도 동작은 동일하다. 인덱스 이름을 지정하지 않으면 전체 인덱스에 대해 검색한다. 인덱스 이름을 지정할 때는 와일드카드 문자(*) 를 사용할 수 있따. 콤마를 이용해 검색 대상을 여럿 지정 가능하다.ex) GET my_index*,mapping_test/_search3.2 쿼리 DSL 검색과 쿼리 문자열 검색요청 본문에 엘라스틱서치 전용 쿼리 DSL을 기술하여 검색하는 방법과 요청 주소줄에 q라는 매개변수를 넣고 그.. 2024. 7. 18. 엘라스틱서치 데이터 다루기 part 2 복수 문서 API 2. 복수 문서 API이번 포스트에서는 여러 문서를 한 번에 색인, 업데이트, 삭제할 때 사용하는 bulk API와 여러 문서를 한 번에 조회할 때 사용하는 multi get API에 대해 작성한다. 그리고 특정 문서를 대상으로 작업하는 update by query API와 delete by query API에 대해 작성한다.2.1 bulk APIbulk API는 여러 색인, 업데이트, 삭제 작업을 한 번의 요청에 담아서 보내는 API다. bulk API는 엘라스틱서치의 다른 API와는 다르게 JSON이 아닌 NDJSON 형태로 만든다. NDJSON은 여러 줄의 JSON을 줄바꿈 문자로 구분하여 요청을 보낸다. Content-Type 헤더도 application/json 대신 application/x-n.. 2024. 7. 11. 엘라스틱서치 데이터 다루기 part 1 단건 문서 API 1. 단건 문서 API문서 API는 인덱스에 문서를 색인, 조회, 업데이트, 삭제하는 API다.1.1 색인 API색인 API는 문서 단건을 색인한다. PUT 또는 POST 메서드에 _doc이나 _create를 지정하여 호출할 수 있다.PUT [인덱스 이름]/_doc/[_id값]POST [인덱스 이름]/_docPUT [인덱스 이름]/_create/[_id값]POST [인덱스 이름]/_create/[_id값]각 API의 차이PUT [인덱스 이름]/_doc/_id 값은 요청 본문에 담아 보낸 JSON 문서를 지정된 인덱스와 _id값으로 색인한다. 만약 해당 인덱스에 이미 같은 _id 값을 가진 문서가 있다면 새 문서로 덮어쓴다. POST 메서드는 _id값을 지정하지 않고 색인을 요청할 경우 사용한다. _id .. 2024. 6. 2. 이전 1 2 다음