Recent Posts
Recent Comments
관리 메뉴

개발잡부

[es] intervals query 본문

ElasticStack/Elasticsearch

[es] intervals query

닉의네임 2022. 1. 6. 16:41
SMALL

사용자의 검색의도를 정교하게 반영하는(?) 결과를 제공하는 쿼리.. 라고 하는데..

확인 들어간다

POST _bulk
{"index":{"_index":"coo", "_id":"1"}}
{"name":"나이키", "weight" : 1, "boost" : 1, "description" : "나이키 상품"}
{"index":{"_index":"coo", "_id":"2"}}
{"name":"나이키 에이맥스","weight" : 1, "boost" : 1,"description" : "나이키 운동화"}
{"index":{"_index":"coo", "_id":"3"}}
{"name":"나이키 에어조던","weight" : 1, "boost" : 1,"description" : "나이키 운동화 농구화"}
{"index":{"_index":"coo", "_id":"4"}}
{"name":"나이키 에어조단","weight" : 1, "boost" : 1,"description" : "나이키 운동화 농구화"}
{"index":{"_index":"coo", "_id":"5"}}
{"name":"나이키 후드티","weight" : 1, "boost" : 1,"description" : "나이키 의류"}
{"index":{"_index":"coo", "_id":"6"}}
{"name":"나이키 후드집업", "weight" : 1, "boost" : 1,"description" : "나이키 의류 자켓"}
{"index":{"_index":"coo", "_id":"7"}}
{"name":"나이키 후드나시티","weight" : 1, "boost" : 1,"description" : "나이키 의류 속옷"}
{"index":{"_index":"coo", "_id":"8"}}
{"name":"나이키 후드점퍼","weight" : 1, "boost" : 1,"description" : "나이키 의류 자켓"}
{"index":{"_index":"coo", "_id":"9"}}
{"name":"나이키 후드트레이닝","weight" : 1, "boost" : 1,"description" : "나이키 의류"}
{"index":{"_index":"coo", "_id":"10"}}
{"name":"나이키 트레이닝","weight" : 1, "boost" : 1,"description" : "나이키 의류 트레이닝"}
POST coo/_search
{
  "query": {
    "intervals" : {
      "name" : {
        "all_of" : {
          "ordered" : true,
          "intervals" : [
            {
              "match" : {
                "query" : "나이키",
                "max_gaps" : 0, // 검색어 토큰 사이의 허용 거리 범위 설정 ( 문서 검색 및 가중치 계산에 영향을 준다. 
                "ordered" : true // 검색어 토큰 순서가 동일한 문서만 찾을 경우 true로 설정 (기본: false) 
              }
            },
            {
              "any_of" : {
                "intervals" : [
                  { "match" : { "query" : "에어조던" } },
                  { "match" : { "query" : "후드점퍼" } }
                ]
              }
            }
          ]
        }
      }
    }
  }
}

Matching Rule을 원하는 대로 지정할 수 있는 것을 확인할 수 있다.

1. "all_of" 룰(Rule)을 통해서 "match" 룰과 "any_of" 룰이 전부 충족

2. "ordered": true를 지정해서 첫 번째 룰과 두 번째 룰은 꼭 순서대로 매칭

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

filter 를 추가해서 조건을 정교하게 추가할 수 있다.

 

음..  음..

intervals 랑 bool 쿼리랑 비슷한거 같은데.. 

 

이런게 있다고 함..

LIST

'ElasticStack > Elasticsearch' 카테고리의 다른 글

[es] 검색쿼리를 만들어 보자  (0) 2022.01.15
[es] Bool Query  (0) 2022.01.10
[es] Java High Level REST Client  (0) 2022.01.05
[es] 자동완성 2  (2) 2022.01.04
[es] 자동완성1  (0) 2022.01.04
Comments