Ähnlich wie das, was Chris als Kommentar vorgeschlagen hat, ist der analoge Ersatz für IN
der terms
filter (Abfragen implizieren das Scoring, was die zurückgegebene Reihenfolge verbessern kann).
SELECT * FROM table WHERE id IN (1, 2, 3);
Die äquivalente Elasticsearch 1.x Filter wären:
{
"query" : {
"filtered" : {
"filter" : {
"terms" : {
"id" : [1, 2, 3]
}
}
}
}
}
Die äquivalente Elasticsearch 2.x + Filter wären:
{
"query" : {
"bool" : {
"filter" : {
"terms" : {
"id" : [1, 2, 3]
}
}
}
}
}
Das wichtige ist, dass die Mitnehmen terms
Filter (und Abfrage für diese Angelegenheit) arbeiten an genauen Übereinstimmungen. Es ist implizit ein or
Betrieb, ähnlich wie IN
.
Wenn Sie es invertieren möchten, können Sie die Verwendung nicht filtern, aber ich würde vorschlagen, die etwas ausführlicher bool
/must_not
-Filter (um die Gewohnheit, auch bool
/must
und bool
verwenden).
{
"query" : {
"bool" : {
"must_not" : {
"terms" : {
"id" : [1, 2, 3]
}
}
}
}
}
Insgesamt ist die Verbindung bool
Abfragesyntax ist , ebenso wie die term
(Singular) und terms
Filter (Plural, wie gezeigt).
http://www.elastic.co/guide/en/elasticsearch/reference/1.5/query-dsl-terms-query.html –