Adding a ticket, since I'm working on it. I will update the required changes below as I find new ones.
Potential blockers:
* Support for specifying analyzers in elasticsearch. yaml seems to have yml has been removed: https://www.elastic.co/guide/en/elasticsearch/reference/5.x/analysis-custom-analyzer.html . : we have to use the Rest * Also, analyzer definitions are now index-scoped.
Major work required:
* The elasticsearch-maven-plugin is not compatible with ES 5 * Elastic only released the core Elasticsearch artifact on maven central, and some modules, but not the groovy module (https://github.com/elastic/elasticsearch/tree/master/modules/lang-groovy). The classes are not part of the core artifact, either (they could have been due to some Gradle magic). **Thus**, running our Elasticsearch integration tests with an embedded instance of Elasticsearch may prove impossible (at least for those which need Groovy). Oddly enough, their own language "Painless" suffers from the exact same issue: http://search.maven.org/#search%7Cga%7C1%7Cg%3Aorg.elasticsearch%20AND%20v%3A5.0.0
Other breaking changes:
* The {{string}} datatype disappeared and has been replaced by {{text}} and {{keyword}}. What we need is probably {{text}}, except for non-anlyzed fields that must be {{keyword}} s. * {{null_value}} is no longer supported on the {{text}} datatype * "filtered" queries are no longer supported and must be replaced by "bool" queries with a "must" and a "filter" * the "queryString" keyword for query string queries does not work anymore, we must use "query_string" (I wonder why we didn't in the first place) * sorting on text fields now requires enabling data loading * DeleteByQuery is a core feature again, with its own API. The plugin has been removed. * The default scripting language is now Painless, which is very similar to Groovy (only script parameters must be prefixed with {{params.}}) * The syntax we used with ES 2 for search scripts ({{"script_fields:"{"_distance":{"params": {...}, "script": "..."} } }}) seems off with the documentation and doesn't work in ES 5. * The "fields" keyword when querying is now "stored_fields" and using "_source" in there is disallowed. Source filtering must be used to access the _source. * {{arcDistanceInKm}} has been renamed to {{arcDistance}} and now returns meters: https://www.elastic.co/guide/en/elasticsearch/reference/5.0/breaking_50_scripting.html#_geopoint_scripts * the {{size}} parameter in bucket aggregation queries (used for facetting) used to accept a 0 value, meaning "Integer.MAX_VALUE". It was a deprecated feature and it's not possible anymore. See https://www.elastic.co/guide/en/elasticsearch/reference/2.4/search-aggregations-bucket-terms-aggregation.html#_size * HSEARCH-2414 affects Elasticsearch 5.0 too (not only 2.4.1). * The Optimize API has been removed in favor of the newer ForceMerge API, which is almost identical (except its name). Jest only supports the Optimize API in its current version. https://www.elastic.co/guide/en/elasticsearch/reference/5.0/breaking_50_rest_api_changes.html#_literal__optimize_literal_endpoint_removed
See my branch where I'm poking around to see what needs to be done: https://github.com/yrodiere/hibernate-search/tree/HSEARCH-2434 |
|