# How to query elasticsearch using array index?

**URL:** <https://discuss.elastic.co/t/how-to-query-elasticsearch-using-array-index/216458>\
**Category:** Elasticsearch\
**Created:** [January 24, 2020, 3:37pm UTC](https://discuss.elastic.co/t/how-to-query-elasticsearch-using-array-index/216458 "2020-01-24T15:37:52Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![meallhour](https://avatars.discourse-cdn.com/v4/letter/m/ccd318/32.png) [@meallhour](https://discuss.elastic.co/u/meallhour)\
**Post date:** [January 24, 2020, 3:37pm UTC](https://discuss.elastic.co/t/how-to-query-elasticsearch-using-array-index/216458/1 "2020-01-24T15:37:52Z")

</div>

My Json Response looks as below:

```
{
  "took": 41,
  "timed_out": false,
  "_shards": {
    "total": 3,
    "successful": 3,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": null,
    "hits": [
      {
        "_index": "abc_history",
        "_type": "abc-data-type",
        "_id": "5e29cbb7965809fe6cb22a7b",
        "_score": null,
        "_source": {
          "sData": [
            {
              "status": "In Progress"
            },
            {
              "status": "Started"
            },
            {
              "status": "Finished"
            }
          ]
        },
        "sort": [
          1579797431366
        ]
      }
    ]
  }
}

```

My ES query looks as below which is returning the above response.

```
{
  "from": 0, 
  "size": 5, 
  "_source": ["sData.status"],
        "query": {
          "bool": {
            "must":[
              {
                "wildcard": {
                  "server": "*ABC2501*"
                }
              },         
              {
                "wildcard": {
                  "sData.status": "*Finish*"
                }
              }
            ]
          }
        },
        "sort": [
          { "requestDate": {"order": "desc"}}
        ]
}

```

I want to modify the query so that ES performs search in `third element` of `sData` which is `sData[2]`  
I have modified the query as below and performing wildcard search for `sData[2].status` but it is not returning anything.

```
{
  "from": 0, 
  "size": 5, 
  "_source": ["sData.status"],
        "query": {
          "bool": {
            "must":[
              {
                "wildcard": {
                  "server": "*ABC2501*"
                }
              },         
              {
                "wildcard": {
                  "sData[2].status": "*Finish*"
                }
              }
            ]
          }
        },
        "sort": [
          { "requestDate": {"order": "desc"}}
        ]
}
```

---

<div class="post-metadata">

**Author:** ![inhinyera16](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/inhinyera16/32/61625_2.png) [@inhinyera16](https://discuss.elastic.co/u/inhinyera16)\
**Post date:** [January 25, 2020, 6:56pm UTC](https://discuss.elastic.co/t/how-to-query-elasticsearch-using-array-index/216458/2 "2020-01-25T18:56:20Z")

</div>

sData should be stored as nested data type in order to query it independently.

```
PUT /abc_history
{
    "mappings": {
        "_doc" : {
            "properties" : {
                "sData" : {
                    "type" : "nested"
                }
            }
        }
    }
}

```

Then query something like this

```
GET /abc_history/_search 
{
    "query": {
        "nested" : {
            "path" : "sData",
            "query" : {
                "bool" : {
                    "must" : [
                    { "match" : {"sData.status" : "Finished"} }
                    ]
                }
            }
        }
    }
}

```

You can check this page regarding nested query [https://www.elastic.co/guide/en/elasticsearch/reference/6.8/query-dsl-nested-query.html](https://www.elastic.co/guide/en/elasticsearch/reference/6.8/query-dsl-nested-query.html)

---

<div class="post-metadata">

**Author:** ![meallhour](https://avatars.discourse-cdn.com/v4/letter/m/ccd318/32.png) [@meallhour](https://discuss.elastic.co/u/meallhour)\
**Post date:** [January 26, 2020, 3:13am UTC](https://discuss.elastic.co/t/how-to-query-elasticsearch-using-array-index/216458/3 "2020-01-26T03:13:23Z")

</div>

I am not looking for `{ "match" : {"sData.status" : "Finished"} }` Instead I am looking for `sData[3]` which could have any value such as `Finished` or `In Progress` or `Started`

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [January 26, 2020, 8:46am UTC](https://discuss.elastic.co/t/how-to-query-elasticsearch-using-array-index/216458/4 "2020-01-26T08:46:49Z")

</div>

Elasticsearch does not index array index, so if you want to search a specific position you probably need to add the position as an attribute and used nested documents.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [February 23, 2020, 8:48am UTC](https://discuss.elastic.co/t/how-to-query-elasticsearch-using-array-index/216458/5 "2020-02-23T08:48:09Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
