Podobny do tego, co Chris zasugerował jako komentarz, analogicznym zamiennikiem dla IN
jest terms
filter (zapytania oznaczają punktację, która może poprawić zwrócone zamówienie).
SELECT * FROM table WHERE id IN (1, 2, 3);
Równoważnik filtr 1.x Elasticsearch to:
{
"query" : {
"filtered" : {
"filter" : {
"terms" : {
"id" : [1, 2, 3]
}
}
}
}
}
Równoważnik 2.x Elasticsearch z filtrem może być:
{
"query" : {
"bool" : {
"filter" : {
"terms" : {
"id" : [1, 2, 3]
}
}
}
}
}
wynos Ważne jest to, że filtr terms
(i zapytanie o tę sprawę) działają na dokładne dopasowania. Jest to domyślnie operacja or
, podobna do IN
.
Jeśli chciał go odwrócić, można użyć nie filtrować, ale proponuję użyć nieco bardziej rozwlekły bool
/must_not
filtr (dostać w zwyczaju również używając bool
/must
i bool
).
{
"query" : {
"bool" : {
"must_not" : {
"terms" : {
"id" : [1, 2, 3]
}
}
}
}
}
Ogólnie składni zapytania bool
związek jest , podobnie jak term
(pojedyncze) i terms
filtry (mnogiej, jak pokazano).
http://www.elastic.co/guide/en/elasticsearch/reference/1.5/query-dsl-terms-query.html –