My ElasticSearch 6.5.2 index look likes:
{
"_index" : "searches",
"_type" : "searches",
"_id" : "cCYuHW4BvwH6Y3jL87ul",
"_score" : 1.0,
"_source" : {
"querySearched" : "telecom",
}
},
{
"_index" : "searches",
"_type" : "searches",
"_id" : "cSYuHW4BvwH6Y3jL_Lvt",
"_score" : 1.0,
"_source" : {
"querySearched" : "telecom",
}
},
{
"_index" : "searches",
"_type" : "searches",
"_id" : "eCb6O24BvwH6Y3jLP7tM",
"_score" : 1.0,
"_source" : {
"querySearched" : "industry",
}
And I would like a query that return this result:
"result":
{
"querySearched" : "telecom",
"number" : 2
},
{
"querySearched" : "industry",
"number" : 1
}
I just want to group by occurence and get number of each, limit to ten biggest numbers. I tried with aggregations but bucket is empty. Thanks!
Case your mapping
Your query should looks like
You should add
fielddata:truein order to enable aggregation for text type field more of thatAfter a short discussion with @Kamal i feel obligated to let you know that if you choose to enable
fielddata:trueyou must know that it can consume a lot of heap space.From the link I've shared:
Another alternative (a more efficient one):
Then your aggregation query
Both solutions works but you should take this under consideration.
Hope it helps