ElasticSearch Query DSL

2941 단어 빅 데이터
  • ES 의 DSL 은 보통 두 개의 자구 로 구성 된다.
  • 특정 필드 에 특정 값 을 일치 시 키 는 Leaf query clauses, 예 를 들 어 match, matchall, term 또는 range 조회
  • Leaf query clauses 또는 기타 복합 조 회 를 조합 한 Compound query clauses (복합 조회), 예 를 들 어 bool 또는 dismax 조회 상기 두 가지 조회 가 일치 하고 여과 (query context or filter context) 두 장면 에서 의 표현 이 다 릅 니 다.

  • 일치 와 필터 (query context or filter context)
  • Query context 는 검색 어 와 일치 하 는 것 외 에 일치 도 값 을 계산 합 니 다.query context 는 query clauses 가 query 인자 에 할당 되 었 을 때 유효 합 니 다.
  • Filter context 는 검색 조건 에 맞 는 문 서 를 걸 러 내 고 일치 도 를 계산 하지 않 습 니 다.자주 사용 하 는 filter 의 결 과 는 ES 캐 시 에 의 해 검색 효율 을 높 일 수 있 습 니 다.filter context 는 query clauses 가 filter 인자 에 할당 되 었 을 때 유효 합 니 다.

  • curl -X GET "localhost:9200/_search" -H 'Content-Type: application/json' -d'
    {
      "query": {  /* query   ,     query context */
        "bool": { /*      */
          "must": [
            { "match": { "title":   "Search"        }},  /*             */
            { "match": { "content": "Elasticsearch" }}  
          ],
          "filter": [  /* filter   ,     filter context */
            { "term":  { "status": "published" }}, 
            { "range": { "publish_date": { "gte": "2015-01-01" }}} 
          ]
        }
      }
    }
    '
    
  • 흔히 볼 수 있 는 Leaf query clauses 검색 자구
  • "match all": {} 모든 문서 와 일치 합 니 다
  • "match none": {} 문서 가 일치 하지 않 습 니 다
  • "match": {"some filed": "some text"}, match 자 구 는 bool 복합 조회 에 나타 나 must, must 를 지원 합 니 다.not, should 기다리다.match 조회 에서 검색 어 는 해당 필드 (some field) 의 단어 방식 에 따라 단 어 를 나 눈 후 일치 합 니 다
  • .
  • "query string": {"default field": "content", "query": "this AND that OR thus"} 검색 어 를 AND 또는 OR 연산 자로 나 누고 각 부분 을 하나의 검색 어로 나 누 어 일치 시 킨 다음 결 과 를 AND 또는 OR 의 연산 에 따라 조합 합 니 다
  • "term": {"some field": "some text"} 검색 어 는 단 어 를 나 누 지 않 고 "some field" 필드 에 "some text" 색인 이 포 함 된 문 서 를 찾 습 니 다.
  • "terms": {"some field": ["some text 1", "some text 2"]} 검색 어 간 의 예 또는 관계, 임의의 검색 어 와 일치 하 는 문 서 를 찾 습 니 다
  • "range": {"some numeric field": {"gte": 10, "lt": 20}, 범위 여과, gte 작 지 않 음, lt 엄 격 히 크 지 않 음, lt 보다 크 지 않 음, lt 엄 격 히 작 음
  • "wildcard": {"some field": "so * te? t"}, 검색 어 는 단 어 를 가리 지 않 고 어댑터 가 일치 하 며 효율 이 비교적 낮 습 니 다. text 형식의 필드 를 조회 할 때 match 형식의 검색 자 구 를 사용 해 야 합 니 다. 그리고 term 검색 자 구 는 키워드 형식의 필드 를 조회 하 는 데 자주 사 용 됩 니 다.(https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html)。

  • Bool Query bool 조 회 는 흔히 볼 수 있 는 조합 조회 로 하나 이상 의 불 조회 자구 로 구성 되 어 있 으 며, 불 조회 자구 의 흔 한 유형 은 must, filter, should 또는 must not 등 이 있다.
  • 좋은 웹페이지 즐겨찾기