Home > Software engineering >  Elastic Search Aggregations not working with subfield keyword
Elastic Search Aggregations not working with subfield keyword

Time:09-25

I am new to ES and trying to work with facet creation. But I am stuck at the first step itself. I have an index with a "text" field that has subfield as "keyword" shown below as an example.

PUT my-index
{
  "mappings": {
    "properties": {
      "flavor": {
        "type": "text",
        "fields": {
          "text": {
            "type": "keyword"
          }
        }
      }
    }
  }
}

I have 5 documents indexed, and I am trying to create buckets using the query below:

GET my-index/_search
{
  "aggs": {
    "my_buckets": {
      "terms": {
        "field": "flavor.keyword"
      }
    }
  }
}

I do not get any error but also I do not get any buckets. But I also tried to do it in a reverse way. i.e. make the flavor field to be a keyword and in turn added text as the subfield. This method works and gives me the desired result. The problem here is I cannot change the original mapping which I have. I was expecting to get the results by using flavor.keyword but I hit a dead end now. Can someone please explain this behavior and anyway I can make it working?

CodePudding user response:

You named the sub field as text. So, you have to refer it by flavor.text.

GET my-index/_search
{
  "aggs": {
    "my_buckets": {
      "terms": {
        "field": "flavor.text"
      }
    }
  }
}
  • Related