AndPy
AndPy

Reputation: 406

Elasticsearch: how to get matching types list?

My elasticsearch index has 10 types in it. When searching for the term "test" I want to get all the documents that matched that query and a list of all the types that has a least one match for that query.

I know I can get this list by going over all results but I guess there's a better way..

Thanks!

Upvotes: 0

Views: 556

Answers (2)

Marieke
Marieke

Reputation: 263

Since facets have been deprecated (https://www.elastic.co/guide/en/elasticsearch/reference/current/search-facets.html) and replaced with aggregations, here is the solution for aggregations:

{
  "query": {
    ...
  },
  "aggs": {
    "your_aggregation_name": {
      "terms": {
        "field": "_type"
      }
    }
  }
}

Link to documentation: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html

Upvotes: 1

AndPy
AndPy

Reputation: 406

Just managed to do that with elasticsearch facets like described here:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-facets.html#_facet_filter

In short you add this to your query:

"facets" : { "facet_name" : { "terms" : {"field" : "_type"} } }

Hope this help someone.

Upvotes: 0

Related Questions