We already know that ES HTTP/JSON API is NOT a REST, but nobody cares (marketing wins). I wrote about this few times.
But why a GET with body is used for querying explain API? It is against rfc2616, where body for GET has no semantics, i.e. body for GET method has no meaning and should be ignored.
I think that these two things are mixed together. ES has no REST API, but HTTP/JSON CRUD-like one. And I think that GET with body is a natural consequence by following CRUD-like pattern. It is ok, but please do it following http rules, too. And please don't call your's API RESTful.
This is not specific to the explain API. The search API uses GET too.
I guess your complaint is that the nested query DSL should be encoded into flat GET url parameters?
Part of the reason I wound up gravitating to elasticsearch is queries can get large/complex and I didn't like using another popular search engine which packed all of the search criteria into convoluted URLs.
I think what he is referring to is that the body of GET requests is supposed to be empty. In other words, POST should be used to send the Query DSL to Elasticsearch.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.