fxlacroix
fxlacroix

Reputation: 567

elasticsearch request an element in an array

I have a document indexed in my elastic search like:

{
   ...
   purchase:{
     zones: ["FR", "GB"]
     ...
   }
   ...
}

I use this kind of query to find for example document with puchase's zone to GB

{
    "query": {
        "filtered": {
            "query": {
                "match_all": {}
            },
            "filter": {
                "term": {
                    "purchase.zones": "GB"
                }
            }
        }
    }
}

But with it i get no results... I would like to perform a query like in php in_array("GB", purchase.zones).

Any help would be very helpful.

Upvotes: 0

Views: 194

Answers (1)

Siddardha Budige
Siddardha Budige

Reputation: 1015

If your "purchase" field is nested type then you have to use nested query to access the "zones".

{
    "nested" : {
        "path" : "obj1",
        "score_mode" : "avg",
        "query" : {
            "bool" : {
                "must" : [
                    {
                        "match" : {"obj1.name" : "blue"}
                    },
                    {
                        "range" : {"obj1.count" : {"gt" : 5}}
                    }
                ]
            }
        }
    }
}

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-nested-query.html

Upvotes: 1

Related Questions