2015-02-06 4 views
6

어떻게이 간단한 SQL 쿼리 elasticsearch에서 실행받을 수 있나요? [MYTYPE] WHERE A = -23.4807339와 B로부터elasticsearch 일치하는 두 개의 필드

SELECT * = -46.60068

정말, 그것은, 멀티 매치 쿼리 내 경우에는 구문 작동하지 않는 것와 문제가 있어요 어떤 쿼리 유형을 사용해야합니까?

답변

5

은 당신처럼 bool 필터는 and 필터를 통해 바람직하다. 이 제안에 대한 전체적인 이야기는 here을 참조하십시오. 왜 더 효율적인 것으로 간주됩니다.

이 말했다되고

, 나는 이런 식으로 할 것인지를 선택합니다 :

{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "bool": { 
      "must": [ 
      {"term": {"a": -23.4807339}}, 
      {"term": {"b": -46.60068}} 
      ] 
     } 
     } 
    } 
    } 
} 
1

and 필터로이 문제를 해결할 수 있습니다. 귀하의 예를 들면 다음과 같습니다 :

{ 
    "size": 100, 
    "query" : {"filtered" : { 
    "query" : {"match_all" : {}}, 
    "filter" : {"and" : [ 
     "term" : {"a": -23.4807339}, 
     "term" : {"b": -46.60068} 
    ]} 
    }} 
} 

올바른 색인 및 유형에 대해 문의하십시오. 반환 세트의 크기를 임의로 100으로 지정 했으므로 유스 케이스에 맞는 값을 지정해야합니다.

필터링 된 검색어 here 외에도 and 필터 here에 대한 자세한 내용이 있습니다. 쿼리의

+0

감사합니다! 그것은 일했다! 내가이 모든 값을 반환하려는 경우, 많은 쿼리를 사용하지 않고 그렇게 할 수있는 방법이 있나요? ViníciusMariano @ –

+0

이 문서의 큰 숫자를 반환 할 거라면, 당신의 가장 좋은 방법은 (다른 데이터베이스 기술에 커서 몇 가지 유사성을 가지고)은'scroll' 기능을보고 아마. 더 포괄적 인 문서는 여기에 있습니다 : http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-scroll.html – rchang