ETL/Elasticsearch

[Elasticsearch] 인덱스 검색 방법(Search API)

PONI 2022. 10. 21. 23:38
반응형

📋Search API

_serach는 검색 작업을 하겠다는 행동을 의미합니다.

그리고 어떻게 검색을 할 것인지에 대한 조건( 쿼리 )들을 명시를 해줘야 원하는 정보들을 얻을 수 있습니다.

엘라스틱서치에서 검색은 인덱스 또는 타입 단위로 수행됩니다.

검색은 타입, 인덱스, 그리고 여러 개의 인덱스를 묶어서 멀티 인덱스 범위로 검색할 수 있습니다.

여러 인덱스를 묶어서 처리하는 엘라스틱서치의 특징을 멀티 테넌시(Multi Tenancy)라고 합니다.

도큐먼트는 그 자체가 1개의 최소 데이터 단위이므로 도큐먼트 단위로 검색한다는 것은 성립되지 않습니다.

 

조건 방법은 2가지가 있습니다.

  • URL에 파라미터를 넘기는 방법 ( URI Search )
  • json 파일에 쿼리를 작성하여 POST 방식으로 넘기는 방법 ( Query DSL )

이 중에서 후자의 방법을 더 많이 사용합니다.

그 이유는 URL이 깔끔해지고, 더 상세한 표현이 가능할 뿐더러 재사용이 가능하기 때문입니다.

 

다음은 abcmrt 인덱스 안의 shoose 도큐먼트에서 nike를 검색한 내용입니다.

# http://localhost:9200/abcmrt/shoose/_search?q=nike

 

위와 같이 검색하고자 하는 인덱스와 타입을 uri로 줌과 동시에 이후에 _search를 붙이고
검색하고자 하는 쿼리(질의)를 params의 q로 주면 됩니다.

 

📌URI Search

엘라스틱서치의 두 가지 주요 검색 방법 중 먼저, URI Search는 http 주소에 검색할 명령을 매개변수 형식으로 포함해서 호출하는 검색입니다.
리퀘스트 바디 검색과 비교해서 사용 방법은 간단하지만 복잡한 질의(쿼리)를 입력하기 어려운 단점이 있습니다.

특정 필드에서만 검색하기

특정 필드만 검색하려면 q 매개변수에 필드명:질의어 형태로 값을 입력합니다.
특정 필드에 값 두 개 이상이 동시에 들어간 값을 찾는 명령을 하고 싶다면 조건 명령어 q매개변수에 AND 또는 OR 값을 공백과 함께 넣어 지정할 수 있습니다.

  • q : 질의 명령을 입력하는 가장 기본적인 검색 매개변수(parameter)
  • df : q 질의에 필드명을 넣는 대신 df 매개변수를 통해 검색할 필드를 지정
# http://localhost:9200/abcmrt/_search?q=nike&df=shoose

 

📍데이터 본문 검색

엘라스틱서치에서 검색할 조건을 JSON 데이터 형식의 질의로 입력해서 사용할 수 있습니다.
이러한 방식의 검색을 data body 검색이라고 하며 URI 검색보다 좀 더 복잡한 형식으로 검색할 수 있습니다.

리퀘스트바디 검색은 엘라스틱서치의 질의 언어인 QueryDSL을 사용합니다.

GET test/_search
{
  "query": {
    "match": {
      "field": "value"
    }
  }
}

 

다음 포스팅에서는 엘라스틱 검색에 대한 부분을 다뤄보겠습니다.

 

🔗참조

https://esbook.kimjmin.net/04-data/4.4-_search

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-search.html

반응형