Your two clauses, mode and schedule, are joined via an AND, so those two
clauses should be part of the *must *section. The schedule clauses is then
an OR between two clauses, so it should be a nested bool filter using
*should*. Hopefully that made sense. :)
Since you are using term queries on what are hopefully non-analyzed fields
(numeric fields are always non-analyzed), I will use a match all query with
filters since it should be more efficient. The query should looking
something like:
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"bool": {
"must": [
{
"term": { "mode": "1" }
},
{
"bool": {
"should": [
{
"term": { "schedule": "1" }
},
{
"term": { "schedule": "3" }
}
]
}
}
]
}
}
}
}
}
--
Ivan
On Mon, May 5, 2014 at 3:36 AM, 曾岩 <[email protected]> wrote:
> Hi,
>
> I'm new to Elasticsearch and try to integrate it into our project but met
> a problem. In our data source, it has two fields: mode and schedule which
> are all integer. Through UI, it should can query records based on these two
> fields like:
> *SELECT * FROM doc WHERE mode = 1 AND (schedule = 1 OR schedule = 3)*
>
> I tried below query JSONs but none return the expected results, anyone can
> help? Thank you!
>
> *{*
> * "query": {*
> * "bool": {*
> * "must": [*
> * { "match": { "mode": 1 } }*
> * ],*
> * "should": [*
> * { "match": { "schedule": 1 } },*
> * { "match": { "schedule": 3 } }*
> * ]*
> * }*
> * }*
> *}*
> -------------------------------------------------------------------
> *{ "query": { "filtered": { "query": { "match_all": {} },
> "filter": { "and" : [ { "term"
> : { "mode" : "1" } } ] }, "filter":
> { "and" : [ { "term" : {
> "schedule" : "1" } }, { "term" : {
> "schedule" : "3" } } ] } } }}*
>
> --
> You received this message because you are subscribed to the Google Groups
> "elasticsearch" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/elasticsearch/45bd7de6-ffe9-4d9f-bef6-be11e19b051f%40googlegroups.com<https://groups.google.com/d/msgid/elasticsearch/45bd7de6-ffe9-4d9f-bef6-be11e19b051f%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
--
You received this message because you are subscribed to the Google Groups
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/elasticsearch/CALY%3DcQC1qjqZBgKXQujiXpp8TCKS0s4QRv97YHXO7_48_Ld8ZA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.