1

I am trying to aggregate on a field that has type text.

Mapping setting:

"Group":{"type":"text"}

And query:

{
    "query": {
        "term": {
            "request_id": 22
        }
    },
    "size": 0,
    "aggs": {
        "sets": {
            "terms": {"field": "Group.keyword"}
        }
    }
}

This gives empty results:

"hits": {
    "total": 7463,
    "max_score": 0,
    "hits": []
},
"aggregations": {
    "sets": {
        "doc_count_error_upper_bound": 0,
        "sum_other_doc_count": 0,
        "buckets": []
    }
}

Without .keyword gives illegal_argument_exception.. reason: ... alternatively use a keyword field instead..

Also, values in Group field are Grp1 and Grp2 only.

How can I aggregate sets based on these two values?

1 Answer 1

2

Update mapping to:

"Group": {
    "type": "text",
    "fields": {
      "keyword": {
        "type": "keyword"
      }
    }
  }

After making the above change in mapping, re-index the documents and then you can use Group.keyword

If you would never want full text search on the values of Group field then you should keep it type as keyword.

"Group":{"type":"keyword"}

In this case you can aggregate on Group field itself.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.