elasticsearch QueryDSL

  • 정의

    쿼리를 정의하기 위해 JSON을 기반으로 하는 전체 쿼리 DSL(Domain Specific Language)을 제공.
    RDMS에 정해진 where문 같은 아이들.

  • score

    문서와 얼마나 관련있는가에 대한 점수는 _score 를 통해 알 수 있다.
    점수계산은 query, filter 컨텍스트의 실행되는 지 여부에 따라 달라짐

  • Query Context

    이 문서가 이 쿼리절과 얼마나 잘 일치하는가?
    점수계산 O

  • Filter Context

    이 문서가 이 쿼리 절과 일치합니까?
    점수계산 X

  • Query + Filter Context Example

GET /_search
{
  "query": { 
    "bool": { 
      "must": [
        { "match": { "title":   "Search"        }},
        { "match": { "content": "Elasticsearch" }}
      ],
      "filter": [ 
        { "term":  { "status": "published" }},
        { "range": { "publish_date": { "gte": "2015-01-01" }}}
      ]
    }
  }
}
'

→ 일반 검색

GET /_search

{
  "query": {"match": {"field": "value"}}
}

→ 특정 field 검색

GET /_search

{
  "fields" : ["field1", "field2"],
  "query" : {
    "term" : {"field" : "value"}
  }
}
  • 복합쿼리
    bool query +
    must : 문서에 일치하는 절이 나타나야 함. 점수에 기여. AND연산자 같음.
    filter : must와 동일하게 문서에 일치하는 절이 나타,나야 함. 단, 점수는 무시되고 캐싱에 대해 고려.

  • Response
    hits : 결과 리스트

*laravel에서 es를 사용할때 elasticsearch/client 패키지 사용. scout라는 패키지도 따로 사용하는 것 같은데 이는 찾아볼것

좋은 웹페이지 즐겨찾기