2017-01-11 1 views
1

elasticsearch로 질의하는 데 몇 가지 문제가 있습니다. 그래서 기본적으로 나는 elasticsearch에 해당하는 SQL을 알고 싶었습니다.탄성 검색 SQL 동급

이 SQL 쿼리에 해당하는 elasticsearch 구문은 무엇입니까?

SELECT * 
FROM people 
WHERE name LIKE($name%) 
     AND (gender = 0 OR age < 18) 
     AND id IN(1, 2, 3) 
     AND id NOT IN(4, 5, 6) 
     AND dead = 0 
ORDER BY status desc, 
      TIME desc 

*은 부울 쿼리 (중첩 된 부울 쿼리)는 SQL 요청보다 더 같은 일을 표현할 수를 사용하여 예를

답변

0

입니다. 용어 쿼리 중 하나가 발견되면 용어 쿼리의 유효성이 검사됩니다 (OR).

POST/인덱스 _/인/_search

{ 
    "query": { 
     "bool": { 
     "must": [ 
      { 
       "match": { 
        "name": "John" 
       } 
      } 
     ], 
     "filter": [ 
      { 
       "bool": { 
        "must": [ 
        { 
         "terms": { 
          "id": [ 
           1, 
           2, 
           3 
          ] 
         } 
        }, 
        { 
         "term": { 
          "dead": 0 
         } 
        }, 
        { 
         "bool": { 
          "should": [ 
           { 
           "term": { 
            "gender": 0 
           } 
           }, 
           { 
           "range": { 
            "age": { 
             "lt": 18 
            } 
           } 
           } 
          ] 
         } 
        } 
        ], 
        "must_not": [ 
        { 
         "terms": { 
          "id": [ 
           4, 
           5, 
           6 
          ] 
         } 
        } 
        ] 
       } 
      } 
     ] 
     } 
    }, 
    "sort": [ 
     { 
     "status": { 
      "order": "desc" 
     }, 
     "time": { 
      "order": "desc" 
     } 
     } 
    ] 
} 
확인
+0

와 무엇인가'should'? –

+0

https://www.elastic.co/guide/en/elasticsearch/reference/2.3/query-dsl-bool-query.html : "\t 일치하는 문서에 절 (쿼리)이 있어야합니다. 부울 쿼리 must 또는 filter 절이 없으면 하나 이상의 should 절이 문서와 일치해야합니다. 일치해야하는 should 절의 최소 수는 minimum_should_match 매개 변수를 사용하여 설정할 수 있습니다. " 미안 해요 "해야한다"는 표현을 표현 했어야했기 때문에 내 대답을 편집했습니다! – Artholl