Open issues

Provide a "compatibility layer" module to help users migrate from Search 5 to Search 6
HSEARCH-3282
Exception: An entity got loaded even though it was not part of the EntityInfo list
HSEARCH-3180
Convert the LockFactoryProvider API to use a NIO Path
HSEARCH-2779
An entity could not be indexed. Gave me java.lang.Object is not an indexed entity or a subclass of an indexed entity
HSEARCH-2530
Initialization options and APIs
HSEARCH-3759
Check Search 6 log/exception messages and use Search 5 messages instead (with Search 5 ID) where possible
HSEARCH-3308
Add explanation of general concepts, HOWTOs to the documentation
HSEARCH-3303
Support for sharing resources among different Index Managers
HSEARCH-2340
Range faceting on multiple numeric values does not work
HSEARCH-1927
JMS queue initialized too early w/o re-try on failure
HSEARCH-1834
Implement a getDeploymentClassloader on ClassLoaderService
HSEARCH-1691
Add match all terms option when matching in the DSL API
HSEARCH-917
Search results not sorted properly
HSEARCH-542
Rename and clarify automatic indexing synchronization strategies
HSEARCH-3808
Use more generic wording in the query DSL
HSEARCH-3807
Upgrade to Byteman 4.0.10
HSEARCH-3806
Upgrade to Lucene 8.4.1
HSEARCH-3799
@IndexedEmbedded should be repeatable
HSEARCH-3796
Fix warnings issued when starting Elasticsearch in integration tests
HSEARCH-3792
Separate, configurable read/write names for Elasticsearch indexes
HSEARCH-3791
Custom names for metadata fields with Elasticsearch
HSEARCH-3789
Remove automatic index optimization
HSEARCH-3779
Remove "index_metadata_complete" configuration property
HSEARCH-3778
Restore configuration of the Similarity in the Lucene backend
HSEARCH-3777
Restore advanced configuration options of the Lucene Writer
HSEARCH-3776
Restore advanced Reader/Writer handling in the Lucene backend
HSEARCH-3775
Allow mapping the document id to non-entity-id properties for ORM's dynamic-map entity types
HSEARCH-3772
Mass indexing for ORM's dynamic-map entity types
HSEARCH-3771
Implicit nested predicate queries for exists predicate targeting an object field
HSEARCH-3762
Implicit nested predicate queries
HSEARCH-3752
dropAndCreateIndexes() as an alternative to purge() in the MassIndexer
HSEARCH-3751
ElasticsearchIndexManager must allow or automatically recreate index
HSEARCH-3749
Document access to the low-level REST client for Elasticsearch
HSEARCH-3747
IndexWorkspacePurgeIT fails on windows
HSEARCH-3746
Support a "degraded mode" where failure to contact Elasticsearch or index documents does not affect the whole application
HSEARCH-3719
Document Backend/IndexManager extensions
HSEARCH-3718
Document declaration of dependencies in bridges
HSEARCH-3710
Document routing key bridges
HSEARCH-3709
Support extracting and indexing map entries
HSEARCH-3689
Support custom container extractors with the ORM mapper
HSEARCH-3688
Mapping a single entity type to multiple indexes
HSEARCH-3683
Document the JSR-352 integration
HSEARCH-3682
Document the programmatic mapping
HSEARCH-3680
Document the bridge resolver
HSEARCH-3678
Complete all missing sections of the documentation
HSEARCH-3677
Backport to 5.x: manage the version of Jackson 2 to the latest available version
HSEARCH-3672
Document the aggregation DSL in details
HSEARCH-3668
Lucene terms aggregations (discrete facets) may return wrong results for any sort other than the default one
HSEARCH-3666
Remove the requirement for works from workplans to be executed in order
HSEARCH-3664
Allow setting the value of bucket aggregations to something more than just the document count with Elasticsearch
HSEARCH-3661
issue 1 of 457

Provide a "compatibility layer" module to help users migrate from Search 5 to Search 6

Description

This module should provide in particular:

  • The most commonly used annotations from Search 5, as well as integration code to detect and apply these annotations to the ORM mapping. In particular:

    • @Indexed

    • @Field

    • @IndexedEmbedded

    • Search 5 analyzer behavior, especially the parts that won't be implemented in Search 6:

      • @AnalyzerDef annotations?

      • Support for "default" analyzers: globally (configuration property), per entity (@Analyzer on a type, inherited), per property (@Analyzer on a getter or class field). These defaults should not apply to fields defined using Search 6 APIs.

  • An implementation of the main runtime APIs:

    • The Search class to retrieve the FullTextEM/FullTextSession

    • The most commonly used methods of FullTextEM/FullTextSession (createFullTextQuery() and index() in particular)

    • The QueryBuilder

    • The most commonly used methods of FullTextQuery

  • Maybe also some optional APIs:

    • Coordinates

    • @Spatial

Parts of the APIs may be dropped if they are not very often used and/or close to impossible to support in Search 6.

The compatibility layer is only expected to work when mapping ORM entities to Lucene indexes. Elasticsearch integration and JMS/JGroups backends, in particular, are out of scope.

We might have to rename or relocate some Search 6 classes to avoid conflicts with the classes in the compatibility layer.

Note that, in order to implement the QueryBuilder in the compatibility layer, we have two solutions:

  • Just copy/pasting the old DSL code from Search 5 and re-implement everything it needs on top of Search 6. In particular, implement the old metamodel. Might be time-consuming.

  • OR Reimplement the old DSL by redirecting calls the new DSL. Might change behavior slightly.

We might want to create subtasks to implement this bits by bits.

Environment

None

Status

Assignee

Unassigned

Reporter

Yoann Rodière

Labels

None

Suitable for new contributors

None

Pull Request

None

Feedback Requested

None

Components

Fix versions

Priority

Blocker
Configure