Details

    • Improvement
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • core/index
    • None
    • New

    Description

      In trying to integrate SortingMergePolicy into ElasticSearch, I ran into an issue where the custom merge logic was being stripped out by IndexUpgraderMergeSpecification. Related issue here:

      https://github.com/elasticsearch/elasticsearch/issues/9731

      In an endeavor to fix this, I attempted to create a DelegatingOneMerge that could be used to chain the different MergePolicies together. I quickly discovered this to be impossible, due to the direct member variable access of OneMerge by IndexWriter and other classes. It would be great if this variable access could be privatized and the consuming classes modified to use the appropriate getters and setters. Here's an example DelegatingOneMerge and modified OneMerge.

      https://gist.github.com/ebradshaw/e0b74e9e8d4976ab9e0a
      https://gist.github.com/ebradshaw/d72116a014f226076303

      The downside here is that this would require an API change, as there are three public variables in OneMerge: estimatedMergeBytes, segments and totalDocCount. These would have to be moved behind public getters.

      Without this change, I'm not sure how we could get the SortingMergePolicy working in ES, but if anyone has any other suggestions I'm all ears! Thanks!

      Attachments

        1. SOLR-6319.patch
          85 kB
          Elliott Bradshaw

        Activity

          People

            Unassigned Unassigned
            ebradshaw Elliott Bradshaw
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated: