2015-02-06 20 views
6

Jak uzyskać proste zapytanie SQL działające pod numerem elasticsearch?elasticsearch pasują do dwóch pól

SELECT * FROM [MyType], gdzie A = -23,4807339 i B = -46,60068

Jestem naprawdę kłopoty z jego składni zapytań multi-mecz nie działa w moim przypadku, jakiego typu zapytania powinienem użyć?

Odpowiedz

5

Dla zapytań takich jak twój bool filtr jest preferowany w stosunku do filtra and. Zobacz here całą historię dotyczącą tej sugestii i dlaczego jest uważana za bardziej wydajną.

nich mówi, wybrałbym to zrobić tak:

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

Możesz podejść do tego z filtrem and. Na przykład coś takiego:

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

Pamiętaj, aby skierować zapytanie pod właściwy indeks i typ. Zwróć uwagę, że podałem rozmiar zestawu zwrotów jako 100 dowolnie - musisz określić wartość, która pasuje do Twojego przypadku użycia.

Więcej informacji na temat filtrowanych zapytań here i więcej na temat filtru andhere.

+0

Dzięki! zadziałało! Co jeśli chcę, aby zwracał wszystkie wartości, czy jest jakiś sposób, aby to zrobić bez korzystania z wielu zapytań? –

+0

@ ViníciusMariano Jeśli masz zamiar zwrócić dużą liczbę dokumentów, najlepiej jest spojrzeć na funkcję 'scroll' (która ma pewne podobieństwo do kursorów w innych technologiach baz danych). Bardziej obszerna dokumentacja znajduje się tutaj: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-scroll.html – rchang

Powiązane problemy