Adding a ticket, since I'm working on it. I will update the required changes below as I find new ones.
Changes Potential blockers:
* Support for specifying analyzers in elasticsearch.yaml seems to have been removed: https://www.elastic.co/guide/en/elasticsearch/reference/5.x/analysis-custom-analyzer.html . 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" * Support for specifying analyzers in elasticsearch.yaml seems to have been removed: https://www.elastic.co/guide/en/elasticsearch/reference/5.x/analysis-custom-analyzer.html . Also, analyzer definitions are now index-scoped. * 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. * HSEARCH-2414 affects Elasticsearch 5.0 too (not only 2.4.1). This might be worked around by using a format such as {{ ZZ-ZZZ}} instead of {{ZZ[ZZZ]}} * {{ 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 Other issues:
* The elasticsearch HSEARCH - maven-plugin is not compatible with ES 2414 affects Elasticsearch 5 .0 too (not only 2.4.1).
See also HSEARCH-2384, and in particular my branch where I'm poking around to see what needs to be done: https://github.com/yrodiere/hibernate-search/tree/HSEARCH- 2384 2434 |
|