<h1 dir="auto">Overview</h1>
<p dir="auto">The main features of the new Completion Suggester are:</p>
<ul dir="auto">
<li><strong>Near real-time</strong> - ensures no deleted docs are ever suggested (addresses <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="42978160" data-permission-text="Title is private" data-url="https://github.com/elastic/elasticsearch/issues/7761" data-hovercard-type="issue" data-hovercard-url="/elastic/elasticsearch/issues/7761/hovercard" href="https://github.com/elastic/elasticsearch/issues/7761">#7761</a>), allows returning arbitrary fields as payload</li>
<li><strong>Flexible scoring</strong> - exposed through the new geo scorer (addresses <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="35329122" data-permission-text="Title is private" data-url="https://github.com/elastic/elasticsearch/issues/6444" data-hovercard-type="issue" data-hovercard-url="/elastic/elasticsearch/issues/6444/hovercard?comment_id=64408912&amp;comment_type=issue_comment" href="https://github.com/elastic/elasticsearch/issues/6444#issuecomment-64408912">#6444 (comment)</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="25725946" data-permission-text="Title is private" data-url="https://github.com/elastic/elasticsearch/issues/4759" data-hovercard-type="issue" data-hovercard-url="/elastic/elasticsearch/issues/4759/hovercard" href="https://github.com/elastic/elasticsearch/issues/4759">#4759</a>)</li>
<li><strong>Flexible filtering with categories</strong> - suggestions can be associated with arbitrary categories, <code class="notranslate">AND</code> and <code class="notranslate">OR</code> operators on categories can be used at query-time. (addreses <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="35329122" data-permission-text="Title is private" data-url="https://github.com/elastic/elasticsearch/issues/6444" data-hovercard-type="issue" data-hovercard-url="/elastic/elasticsearch/issues/6444/hovercard" href="https://github.com/elastic/elasticsearch/issues/6444">#6444</a>)</li>
</ul>
<p dir="auto">Apart from the features above, the new suggester will be able to return multiple outputs matching an input upon configuration (<code class="notranslate">duplicate_output</code>) (addresses <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="46079978" data-permission-text="Title is private" data-url="https://github.com/elastic/elasticsearch/issues/8129" data-hovercard-type="issue" data-hovercard-url="/elastic/elasticsearch/issues/8129/hovercard" href="https://github.com/elastic/elasticsearch/issues/8129">#8129</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="42198626" data-permission-text="Title is private" data-url="https://github.com/elastic/elasticsearch/issues/7641" data-hovercard-type="issue" data-hovercard-url="/elastic/elasticsearch/issues/7641/hovercard" href="https://github.com/elastic/elasticsearch/issues/7641">#7641</a>, <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="23316469" data-permission-text="Title is private" data-url="https://github.com/elastic/elasticsearch/issues/4255" data-hovercard-type="issue" data-hovercard-url="/elastic/elasticsearch/issues/4255/hovercard" href="https://github.com/elastic/elasticsearch/issues/4255">#4255</a>)</p>
<p dir="auto">The new Completion Suggester will be using <code class="notranslate">NRTSuggester</code> instead of the previous <code class="notranslate">XAnalyzingSuggester</code>.</p>
<p dir="auto"><strong>Sample use-cases:</strong></p>
<ul dir="auto">
<li><strong>Filtering with categories</strong> - get completion for some prefix for all or any provided <code class="notranslate">categories</code></li>
<li><strong>Flexible scoring (geo)</strong> - get completion for some prefix for all or any provided <code class="notranslate">categories</code> sorted by the distance (between provided <code class="notranslate">score_context</code> and completion <code class="notranslate">weight</code>).</li>
</ul>
<h1 dir="auto">Usage</h1>
<p dir="auto"><strong>NOTE:</strong> The API presented is experimental and may change.</p>
<h2 dir="auto">Mapping</h2>
<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="curl -X PUT localhost:9200/&lt;index&gt;/&lt;type&gt;/_mapping -d '{
    &quot;&lt;type&gt;&quot;: {
        &quot;properties&quot;: {
            &quot;name&quot;: {
                &quot;type&quot;: &quot;string&quot;
            },
            &quot;suggest&quot;: {
                &quot;type&quot;: &quot;completion&quot;,
                &quot;index_analyzer&quot;: &quot;..&quot;,
                &quot;search_analyzer&quot;: “..”,
                &quot;preserve_separators&quot;: true | false,
                &quot;preserve_position_increments&quot;: true | false,
                &quot;duplicate_output&quot; : true | false, (default: false)
                &quot;has_categories&quot;: true | false, (default: false)
                &quot;scorer&quot;: &quot;default&quot; | &quot;geo&quot; (default: &quot;default&quot;)
            }
        }
    }
}'"><pre class="notranslate">curl -X PUT localhost:9200/<span class="pl-k">&lt;</span>index<span class="pl-k">&gt;</span>/<span class="pl-k">&lt;</span>type<span class="pl-k">&gt;</span>/_mapping -d <span class="pl-s"><span class="pl-pds">'</span>{</span>
<span class="pl-s">    "&lt;type&gt;": {</span>
<span class="pl-s">        "properties": {</span>
<span class="pl-s">            "name": {</span>
<span class="pl-s">                "type": "string"</span>
<span class="pl-s">            },</span>
<span class="pl-s">            "suggest": {</span>
<span class="pl-s">                "type": "completion",</span>
<span class="pl-s">                "index_analyzer": "..",</span>
<span class="pl-s">                "search_analyzer": “..”,</span>
<span class="pl-s">                "preserve_separators": true | false,</span>
<span class="pl-s">                "preserve_position_increments": true | false,</span>
<span class="pl-s">                "duplicate_output" : true | false, (default: false)</span>
<span class="pl-s">                "has_categories": true | false, (default: false)</span>
<span class="pl-s">                "scorer": "default" | "geo" (default: "default")</span>
<span class="pl-s">            }</span>
<span class="pl-s">        }</span>
<span class="pl-s">    }</span>
<span class="pl-s">}<span class="pl-pds">'</span></span></pre></div>
<h2 dir="auto">Indexing</h2>
<h3 dir="auto">Indexing with <code class="notranslate">categories</code> and default <code class="notranslate">scorer</code></h3>
<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="curl -X PUT 'localhost:9200/music/song/1?refresh=true' -d '{
    &quot;name&quot;: &quot;completion_with_default_scorer&quot;,
    &quot;suggest&quot;: {
        &quot;categories&quot; : [&quot;rock&quot;, &quot;grunge&quot;]
        &quot;input&quot;: [ &quot;Nevermind&quot;, &quot;Nirvana&quot; ],
        &quot;output&quot;: &quot;Nirvana - Nevermind&quot;,
        &quot;weight&quot;: 34
    }
}'"><pre class="notranslate">curl -X PUT <span class="pl-s"><span class="pl-pds">'</span>localhost:9200/music/song/1?refresh=true<span class="pl-pds">'</span></span> -d <span class="pl-s"><span class="pl-pds">'</span>{</span>
<span class="pl-s">    "name": "completion_with_default_scorer",</span>
<span class="pl-s">    "suggest": {</span>
<span class="pl-s">        "categories" : ["rock", "grunge"]</span>
<span class="pl-s">        "input": [ "Nevermind", "Nirvana" ],</span>
<span class="pl-s">        "output": "Nirvana - Nevermind",</span>
<span class="pl-s">        "weight": 34</span>
<span class="pl-s">    }</span>
<span class="pl-s">}<span class="pl-pds">'</span></span></pre></div>
<h3 dir="auto">Indexing with <code class="notranslate">categories</code> and geo <code class="notranslate">scorer</code></h3>
<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="curl -X PUT 'localhost:9200/places/food/1?refresh=true' -d '{
    &quot;name&quot;: &quot;completion_with_geo_scorer&quot;,
    &quot;suggest&quot;: {
        &quot;categories&quot; : [&quot;cafe&quot;, &quot;snacks&quot;]
        &quot;input&quot;: [ &quot;timmis&quot;, &quot;timhorton&quot; ],
        &quot;output&quot;: &quot;Tim Hortons&quot;,
        &quot;weight&quot;: {
            &quot;lat&quot;: ...,
            &quot;lon&quot;: ...
        }
    }
}'"><pre class="notranslate">curl -X PUT <span class="pl-s"><span class="pl-pds">'</span>localhost:9200/places/food/1?refresh=true<span class="pl-pds">'</span></span> -d <span class="pl-s"><span class="pl-pds">'</span>{</span>
<span class="pl-s">    "name": "completion_with_geo_scorer",</span>
<span class="pl-s">    "suggest": {</span>
<span class="pl-s">        "categories" : ["cafe", "snacks"]</span>
<span class="pl-s">        "input": [ "timmis", "timhorton" ],</span>
<span class="pl-s">        "output": "Tim Hortons",</span>
<span class="pl-s">        "weight": {</span>
<span class="pl-s">            "lat": ...,</span>
<span class="pl-s">            "lon": ...</span>
<span class="pl-s">        }</span>
<span class="pl-s">    }</span>
<span class="pl-s">}<span class="pl-pds">'</span></span></pre></div>
<h3 dir="auto">Indexing with no <code class="notranslate">categories</code> and default <code class="notranslate">scorer</code></h3>
<p dir="auto">same as the current Completion Suggester</p>
<h2 dir="auto">Querying</h2>
<p dir="auto"><strong>Note:</strong> <code class="notranslate">payload_template</code> can have references to one or more fields that will be retrieved at query-time.</p>
<h3 dir="auto">Querying on suggesters with <code class="notranslate">categories</code> and default <code class="notranslate">scorer</code></h3>
<p dir="auto">Query all completions associated with <code class="notranslate">category</code> "rock" with payload</p>
<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="curl -X POST 'localhost:9200/music/_suggest?pretty' -d '{
    &quot;song-suggest&quot; : {
        &quot;text&quot; : &quot;nir&quot;,
        &quot;categories&quot; : [&quot;rock&quot;],
        &quot;payload_template&quot; : &quot;attr1: {{field1Name}}, attr2: {{field2Name}}&quot;
        &quot;completion&quot; : {
            &quot;field&quot; : &quot;suggest&quot;
        }
    }
}'
{
  &quot;_shards&quot; : {
    &quot;total&quot; : 5,
    &quot;successful&quot; : 5,
    &quot;failed&quot; : 0
  },
  &quot;song-suggest&quot; : [ {
    &quot;text&quot; : &quot;nir&quot;,
    &quot;offset&quot; : 0,
    &quot;length&quot; : 4,
    &quot;options&quot; : [ {
      &quot;text&quot; : &quot;Nirvana - Nevermind&quot;,
      &quot;score&quot; : 34.0, 
      &quot;categories&quot; : [&quot;rock&quot;],
      &quot;payload&quot; : &quot;attr1: field1Value, attr2: field2Value&quot;
    } ]
  } ]
}"><pre class="notranslate">curl -X POST <span class="pl-s"><span class="pl-pds">'</span>localhost:9200/music/_suggest?pretty<span class="pl-pds">'</span></span> -d <span class="pl-s"><span class="pl-pds">'</span>{</span>
<span class="pl-s">    "song-suggest" : {</span>
<span class="pl-s">        "text" : "nir",</span>
<span class="pl-s">        "categories" : ["rock"],</span>
<span class="pl-s">        "payload_template" : "attr1: {{field1Name}}, attr2: {{field2Name}}"</span>
<span class="pl-s">        "completion" : {</span>
<span class="pl-s">            "field" : "suggest"</span>
<span class="pl-s">        }</span>
<span class="pl-s">    }</span>
<span class="pl-s">}<span class="pl-pds">'</span></span>
{
  <span class="pl-s"><span class="pl-pds">"</span>_shards<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> {
    <span class="pl-s"><span class="pl-pds">"</span>total<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> 5,
    <span class="pl-s"><span class="pl-pds">"</span>successful<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> 5,
    <span class="pl-s"><span class="pl-pds">"</span>failed<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> 0
  },
  <span class="pl-s"><span class="pl-pds">"</span>song-suggest<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> [ {
    <span class="pl-s"><span class="pl-pds">"</span>text<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> <span class="pl-s"><span class="pl-pds">"</span>nir<span class="pl-pds">"</span></span>,
    <span class="pl-s"><span class="pl-pds">"</span>offset<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> 0,
    <span class="pl-s"><span class="pl-pds">"</span>length<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> 4,
    <span class="pl-s"><span class="pl-pds">"</span>options<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> [ {
      <span class="pl-s"><span class="pl-pds">"</span>text<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> <span class="pl-s"><span class="pl-pds">"</span>Nirvana - Nevermind<span class="pl-pds">"</span></span>,
      <span class="pl-s"><span class="pl-pds">"</span>score<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> 34.0, 
      <span class="pl-s"><span class="pl-pds">"</span>categories<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> [<span class="pl-s"><span class="pl-pds">"</span>rock<span class="pl-pds">"</span></span>],
      <span class="pl-s"><span class="pl-pds">"</span>payload<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> <span class="pl-s"><span class="pl-pds">"</span>attr1: field1Value, attr2: field2Value<span class="pl-pds">"</span></span>
    } ]
  } ]
}</pre></div>
<p dir="auto">Query all completions which are either associated with rock <code class="notranslate">category</code> or metal <code class="notranslate">category</code>.<br>
<strong>Note:</strong> <code class="notranslate">category_operation</code> defaults to "AND"</p>
<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="curl -X POST 'localhost:9200/music/_suggest?pretty' -d '{
    &quot;song-suggest&quot; : {
        &quot;text&quot; : &quot;nir&quot;,
        &quot;categories&quot; : [&quot;rock&quot;, &quot;metal&quot;],
        &quot;category_operation&quot;: &quot;OR&quot;, 
        &quot;completion&quot; : {
            &quot;field&quot; : &quot;suggest&quot;
        }
    }
}'"><pre class="notranslate">curl -X POST <span class="pl-s"><span class="pl-pds">'</span>localhost:9200/music/_suggest?pretty<span class="pl-pds">'</span></span> -d <span class="pl-s"><span class="pl-pds">'</span>{</span>
<span class="pl-s">    "song-suggest" : {</span>
<span class="pl-s">        "text" : "nir",</span>
<span class="pl-s">        "categories" : ["rock", "metal"],</span>
<span class="pl-s">        "category_operation": "OR", </span>
<span class="pl-s">        "completion" : {</span>
<span class="pl-s">            "field" : "suggest"</span>
<span class="pl-s">        }</span>
<span class="pl-s">    }</span>
<span class="pl-s">}<span class="pl-pds">'</span></span></pre></div>
<h3 dir="auto">Querying on suggesters with <code class="notranslate">categories</code> and geo <code class="notranslate">scorer</code></h3>
<p dir="auto">Query all completions which are associated with <code class="notranslate">category</code> "cafe" with some <code class="notranslate">score_context</code> (e.g. current location). The result will be sorted by the distance of the geo <code class="notranslate">score</code> for the completion w.r.t. provided <code class="notranslate">score_context</code></p>
<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="curl -X POST 'localhost:9200/places/_suggest?pretty' -d '{
    &quot;place-suggest&quot; : {
        &quot;text&quot; : &quot;tim&quot;,
        &quot;categories&quot; : [&quot;cafe&quot;],
        &quot;score_context&quot; : { &quot;lat&quot;: ..., &quot;lon&quot;: ... }
        &quot;payload_template&quot; : &quot;attr1: {{field1Name}}, attr2: {{field2Name}}&quot;
        &quot;completion&quot; : {
            &quot;field&quot; : &quot;suggest&quot;
        }
    }
}'
{
  &quot;_shards&quot; : {
    &quot;total&quot; : 5,
    &quot;successful&quot; : 5,
    &quot;failed&quot; : 0
  },
  &quot;place-suggest&quot; : [ {
    &quot;text&quot; : &quot;tim&quot;,
    &quot;offset&quot; : 0,
    &quot;length&quot; : 4,
    &quot;options&quot; : [ {
      &quot;text&quot; : &quot;Tim Hortons&quot;,
      &quot;score&quot; : &lt;Distance between `score_context` and `completion score`&gt;, 
      &quot;categories&quot; : [&quot;cafe&quot;],
      &quot;payload&quot; : &quot;attr1: field1Value, attr2: field2Value&quot;
    } ]
  } ]
}"><pre class="notranslate">curl -X POST <span class="pl-s"><span class="pl-pds">'</span>localhost:9200/places/_suggest?pretty<span class="pl-pds">'</span></span> -d <span class="pl-s"><span class="pl-pds">'</span>{</span>
<span class="pl-s">    "place-suggest" : {</span>
<span class="pl-s">        "text" : "tim",</span>
<span class="pl-s">        "categories" : ["cafe"],</span>
<span class="pl-s">        "score_context" : { "lat": ..., "lon": ... }</span>
<span class="pl-s">        "payload_template" : "attr1: {{field1Name}}, attr2: {{field2Name}}"</span>
<span class="pl-s">        "completion" : {</span>
<span class="pl-s">            "field" : "suggest"</span>
<span class="pl-s">        }</span>
<span class="pl-s">    }</span>
<span class="pl-s">}<span class="pl-pds">'</span></span>
{
  <span class="pl-s"><span class="pl-pds">"</span>_shards<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> {
    <span class="pl-s"><span class="pl-pds">"</span>total<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> 5,
    <span class="pl-s"><span class="pl-pds">"</span>successful<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> 5,
    <span class="pl-s"><span class="pl-pds">"</span>failed<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> 0
  },
  <span class="pl-s"><span class="pl-pds">"</span>place-suggest<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> [ {
    <span class="pl-s"><span class="pl-pds">"</span>text<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> <span class="pl-s"><span class="pl-pds">"</span>tim<span class="pl-pds">"</span></span>,
    <span class="pl-s"><span class="pl-pds">"</span>offset<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> 0,
    <span class="pl-s"><span class="pl-pds">"</span>length<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> 4,
    <span class="pl-s"><span class="pl-pds">"</span>options<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> [ {
      <span class="pl-s"><span class="pl-pds">"</span>text<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> <span class="pl-s"><span class="pl-pds">"</span>Tim Hortons<span class="pl-pds">"</span></span>,
      <span class="pl-s"><span class="pl-pds">"</span>score<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> <span class="pl-k">&lt;</span>Distance between <span class="pl-s"><span class="pl-pds">`</span>score_context<span class="pl-pds">`</span></span> and <span class="pl-s"><span class="pl-pds">`</span>completion score<span class="pl-pds">`</span></span><span class="pl-k">&gt;</span>, 
      <span class="pl-s"><span class="pl-pds">"</span>categories<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> [<span class="pl-s"><span class="pl-pds">"</span>cafe<span class="pl-pds">"</span></span>],
      <span class="pl-s"><span class="pl-pds">"</span>payload<span class="pl-pds">"</span></span> <span class="pl-c1">:</span> <span class="pl-s"><span class="pl-pds">"</span>attr1: field1Value, attr2: field2Value<span class="pl-pds">"</span></span>
    } ]
  } ]
}</pre></div>
<h3 dir="auto">Querying on suggesters with no <code class="notranslate">categories</code> and default <code class="notranslate">scorer</code></h3>
<p dir="auto">same as the current Completion Suggester</p>
<h1 dir="auto">NRTSuggester</h1>
<p dir="auto">The new Completion Suggester will be using a new <code class="notranslate">NRTSuggester</code>. Currently the <code class="notranslate">NRTSuggester</code> is under development and is planned to support at least the functionalities described so far.</p>
<p dir="auto">In the second phase, the following will be considered:</p>
<ul dir="auto">
<li>enable 'fuzziness' (edit distance) to influence suggestion scoring (addresses <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="24256050" data-permission-text="Title is private" data-url="https://github.com/elastic/elasticsearch/issues/4441" data-hovercard-type="issue" data-hovercard-url="/elastic/elasticsearch/issues/4441/hovercard" href="https://github.com/elastic/elasticsearch/issues/4441">#4441</a>)</li>
<li>[TENTATIVE] experiment with enabling filter support (addresses <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="45875729" data-permission-text="Title is private" data-url="https://github.com/elastic/elasticsearch/issues/8096" data-hovercard-type="issue" data-hovercard-url="/elastic/elasticsearch/issues/8096/hovercard" href="https://github.com/elastic/elasticsearch/issues/8096">#8096</a>)</li>
</ul>
<h1 dir="auto">Migration plan</h1>
<p dir="auto">New Completion Suggester will use a new completion index format under the hood, so some work needs to be done to upgrade from existing completion suggester to the new one. The migration strategy still needs to be decided.</p>
<p dir="auto">org.apache.lucene.index.MergePolicy$MergeException: java.lang.NullPointerException<br>
at org.elasticsearch.index.merge.scheduler.ConcurrentMergeSchedulerProvider$CustomConcurrentMergeScheduler.handleMergeException(ConcurrentMergeSchedulerProvider.java:99)<br>
at org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:518)<br>
Caused by: java.lang.NullPointerException<br>
at org.elasticsearch.search.suggest.completion.AnalyzingCompletionLookupProvider$1$1.finish(AnalyzingCompletionLookupProvider.java:134)<br>
at org.elasticsearch.search.suggest.completion.Completion090PostingsFormat$SuggestFieldsConsumer$1.finish(Completion090PostingsFormat.java:152)<br>
at org.apache.lucene.codecs.TermsConsumer.merge(TermsConsumer.java:204)<br>
at org.apache.lucene.codecs.FieldsConsumer.merge(FieldsConsumer.java:72)<br>
at org.apache.lucene.index.SegmentMerger.mergeTerms(SegmentMerger.java:365)<br>
at org.apache.lucene.index.SegmentMerger.merge(SegmentMerger.java:98)<br>
at org.apache.lucene.index.IndexWriter.mergeMiddle(IndexWriter.java:3772)<br>
at org.apache.lucene.index.IndexWriter.merge(IndexWriter.java:3376)<br>
at org.apache.lucene.index.ConcurrentMergeScheduler.doMerge(ConcurrentMergeScheduler.java:405)<br>
at org.apache.lucene.index.TrackingConcurrentMergeScheduler.doMerge(TrackingConcurrentMergeScheduler.java:91)<br>
at org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:482)</p>
<p dir="auto">As always, let me know if there's anything more I can provide to help debug.</p>