Elasticsearch

Elasticsearch 검색 API

illho 2024. 3. 18. 12:10

개발환경: elasticsearch 8.12.2 , kibana 8.12.2

 

Elasticsearch 쿼리를 통한 검색기능

검색은 인덱스 단위로 이루어진다.

실습은 오늘은 git bash가 아닌 kibana에서 진행했다.

 

기본 검색

 

명령어

GET sport/_search

 

결과

 

URI 검색

 

_search 뒤에 q 파라미터를 사용해서 검색어를 입력할 수 있다. 

 

 

명령어 : sport 인덱스에서 soccer 라는 값을 검색한다.

GET sport/_search?q=soccer

 

 

결과

 

결과를 보면 hits.total.value 부분에 문서의 개수가 표시된다.

그 안의 hits:[ ] 구문 안에 배열로 정확도 높은 문서 10개가 나타난다.

 

 

두 개의 검색어 soccer , goodgood 를 AND 조건으로 검색하는 방법

 

명령어

GET sport/_search?q=message4 AND test

 

결과

 

 

검색어 soccer를 name 필드에서 찾고 싶다면 <필드명>:<검색어> 형태로 입력한다.

 

명령어

GET sport/_search?q=name:soccer

 

결과

 

 

데이터 본문 검색

데이터 본문 검색은 검색 쿼리를 데이터 본문으로 입력하는 방식이다.

elasticsearch의 QueryDSL을 사용하며 쿼리 또한 Json 형식으로 되어 있다.

 

 

match

가장 쉽고 많이 사용되는 match 쿼리이다.

 

명령어

GET sport/_search
{
  "query": {
      "match": {
          "name": "test4"
      }
  }
}

 

결과

 

멀티테넌시

elasticsearch는 여러 개의 인덱스를 한꺼번에 묶어서 검색할 수 있는 멀티테넌시를 지원한다.

ex) sport-*/_search 명령으로 한꺼번에 검색이 가능하다.

여러개 인덱스를 검색할때는 , 쉼표로 나열하거나 * 문자로 묶으면 된다.

 

명령어

GET sport*/_search

 

 

결과

 

 

Reference

https://esbook.kimjmin.net/05-search

https://wonyong-jang.github.io/elk/2021/02/08/ELK-Elastic-Search4.html