Upgrade to Lucene 10 (#114741)

The most relevant ES changes that upgrading to Lucene 10 requires are:

- use the appropriate IOContext
- Scorer / ScorerSupplier breaking changes
- Regex automaton are no longer determinized by default
- minimize moved to test classes
- introduce Elasticsearch900Codec
- adjust slicing code according to the added support for intra-segment concurrency
- disable intra-segment concurrency in tests
- adjust accessor methods for many Lucene classes that became a record
- adapt to breaking changes in the analysis area

Co-authored-by: Christoph Büscher <christophbuescher@posteo.de>
Co-authored-by: Mayya Sharipova <mayya.sharipova@elastic.co>
Co-authored-by: ChrisHegarty <chegar999@gmail.com>
Co-authored-by: Brian Seeders <brian.seeders@elastic.co>
Co-authored-by: Armin Braun <me@obrown.io>
Co-authored-by: Panagiotis Bailis <pmpailis@gmail.com>
Co-authored-by: Benjamin Trent <4357155+benwtrent@users.noreply.github.com>
This commit is contained in:
Luca Cavanna 2024-10-21 13:38:23 +02:00 committed by GitHub
parent 671458a999
commit 8efd08b019
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
662 changed files with 8805 additions and 3640 deletions

View file

@ -218,7 +218,7 @@ public class RRFRankMultiShardIT extends ESIntegTestCase {
.addFetchField("text0")
.setSize(19),
response -> {
assertEquals(51, response.getHits().getTotalHits().value);
assertEquals(51, response.getHits().getTotalHits().value());
assertEquals(19, response.getHits().getHits().length);
SearchHit hit = response.getHits().getAt(0);
@ -355,7 +355,7 @@ public class RRFRankMultiShardIT extends ESIntegTestCase {
.setSize(11)
.addAggregation(AggregationBuilders.terms("sums").field("int")),
response -> {
assertEquals(101, response.getHits().getTotalHits().value);
assertEquals(101, response.getHits().getTotalHits().value());
assertEquals(11, response.getHits().getHits().length);
SearchHit hit = response.getHits().getAt(0);
@ -483,7 +483,7 @@ public class RRFRankMultiShardIT extends ESIntegTestCase {
.addAggregation(AggregationBuilders.terms("sums").field("int"))
.setStats("search"),
response -> {
assertEquals(51, response.getHits().getTotalHits().value);
assertEquals(51, response.getHits().getTotalHits().value());
assertEquals(19, response.getHits().getHits().length);
SearchHit hit = response.getHits().getAt(0);

View file

@ -217,7 +217,7 @@ public class RRFRankSingleShardIT extends ESSingleNodeTestCase {
.addFetchField("text0")
.setSize(19),
response -> {
assertEquals(51, response.getHits().getTotalHits().value);
assertEquals(51, response.getHits().getTotalHits().value());
assertEquals(19, response.getHits().getHits().length);
SearchHit hit = response.getHits().getAt(0);
@ -356,7 +356,7 @@ public class RRFRankSingleShardIT extends ESSingleNodeTestCase {
.setSize(11)
.addAggregation(AggregationBuilders.terms("sums").field("int")),
response -> {
assertEquals(101, response.getHits().getTotalHits().value);
assertEquals(101, response.getHits().getTotalHits().value());
assertEquals(11, response.getHits().getHits().length);
SearchHit hit = response.getHits().getAt(0);
@ -486,7 +486,7 @@ public class RRFRankSingleShardIT extends ESSingleNodeTestCase {
.addAggregation(AggregationBuilders.terms("sums").field("int"))
.setStats("search"),
response -> {
assertEquals(51, response.getHits().getTotalHits().value);
assertEquals(51, response.getHits().getTotalHits().value());
assertEquals(19, response.getHits().getHits().length);
SearchHit hit = response.getHits().getAt(0);

View file

@ -198,8 +198,8 @@ public class RRFRetrieverBuilderIT extends ESIntegTestCase {
ElasticsearchAssertions.assertResponse(req, resp -> {
assertNull(resp.pointInTimeId());
assertNotNull(resp.getHits().getTotalHits());
assertThat(resp.getHits().getTotalHits().value, equalTo(6L));
assertThat(resp.getHits().getTotalHits().relation, equalTo(TotalHits.Relation.EQUAL_TO));
assertThat(resp.getHits().getTotalHits().value(), equalTo(6L));
assertThat(resp.getHits().getTotalHits().relation(), equalTo(TotalHits.Relation.EQUAL_TO));
assertThat(resp.getHits().getHits().length, lessThanOrEqualTo(size));
for (int k = 0; k < Math.min(size, resp.getHits().getHits().length); k++) {
assertThat(resp.getHits().getAt(k).getId(), equalTo(expectedDocIds.get(k + fDocs_to_fetch)));
@ -249,8 +249,8 @@ public class RRFRetrieverBuilderIT extends ESIntegTestCase {
ElasticsearchAssertions.assertResponse(req, resp -> {
assertNull(resp.pointInTimeId());
assertNotNull(resp.getHits().getTotalHits());
assertThat(resp.getHits().getTotalHits().value, equalTo(6L));
assertThat(resp.getHits().getTotalHits().relation, equalTo(TotalHits.Relation.EQUAL_TO));
assertThat(resp.getHits().getTotalHits().value(), equalTo(6L));
assertThat(resp.getHits().getTotalHits().relation(), equalTo(TotalHits.Relation.EQUAL_TO));
assertThat(resp.getHits().getHits().length, equalTo(1));
assertThat(resp.getHits().getAt(0).getId(), equalTo("doc_2"));
@ -308,8 +308,8 @@ public class RRFRetrieverBuilderIT extends ESIntegTestCase {
ElasticsearchAssertions.assertResponse(req, resp -> {
assertNull(resp.pointInTimeId());
assertNotNull(resp.getHits().getTotalHits());
assertThat(resp.getHits().getTotalHits().value, equalTo(6L));
assertThat(resp.getHits().getTotalHits().relation, equalTo(TotalHits.Relation.EQUAL_TO));
assertThat(resp.getHits().getTotalHits().value(), equalTo(6L));
assertThat(resp.getHits().getTotalHits().relation(), equalTo(TotalHits.Relation.EQUAL_TO));
assertThat(resp.getHits().getHits().length, equalTo(4));
assertThat(resp.getHits().getAt(0).getId(), equalTo("doc_2"));
assertThat(resp.getHits().getAt(1).getId(), equalTo("doc_6"));
@ -366,8 +366,8 @@ public class RRFRetrieverBuilderIT extends ESIntegTestCase {
ElasticsearchAssertions.assertResponse(req, resp -> {
assertNull(resp.pointInTimeId());
assertNotNull(resp.getHits().getTotalHits());
assertThat(resp.getHits().getTotalHits().value, equalTo(6L));
assertThat(resp.getHits().getTotalHits().relation, equalTo(TotalHits.Relation.EQUAL_TO));
assertThat(resp.getHits().getTotalHits().value(), equalTo(6L));
assertThat(resp.getHits().getTotalHits().relation(), equalTo(TotalHits.Relation.EQUAL_TO));
assertThat(resp.getHits().getHits().length, equalTo(4));
assertThat(resp.getHits().getAt(0).getId(), equalTo("doc_2"));
assertThat(resp.getHits().getAt(1).getId(), equalTo("doc_6"));
@ -441,8 +441,8 @@ public class RRFRetrieverBuilderIT extends ESIntegTestCase {
ElasticsearchAssertions.assertResponse(req, resp -> {
assertNull(resp.pointInTimeId());
assertNotNull(resp.getHits().getTotalHits());
assertThat(resp.getHits().getTotalHits().value, equalTo(6L));
assertThat(resp.getHits().getTotalHits().relation, equalTo(TotalHits.Relation.EQUAL_TO));
assertThat(resp.getHits().getTotalHits().value(), equalTo(6L));
assertThat(resp.getHits().getTotalHits().relation(), equalTo(TotalHits.Relation.EQUAL_TO));
assertThat(resp.getHits().getAt(0).getId(), equalTo("doc_7"));
assertThat(resp.getHits().getAt(1).getId(), equalTo("doc_2"));
assertThat(resp.getHits().getAt(2).getId(), equalTo("doc_6"));
@ -493,8 +493,8 @@ public class RRFRetrieverBuilderIT extends ESIntegTestCase {
ElasticsearchAssertions.assertResponse(req, resp -> {
assertNull(resp.pointInTimeId());
assertNotNull(resp.getHits().getTotalHits());
assertThat(resp.getHits().getTotalHits().value, equalTo(6L));
assertThat(resp.getHits().getTotalHits().relation, equalTo(TotalHits.Relation.EQUAL_TO));
assertThat(resp.getHits().getTotalHits().value(), equalTo(6L));
assertThat(resp.getHits().getTotalHits().relation(), equalTo(TotalHits.Relation.EQUAL_TO));
assertThat(resp.getHits().getHits().length, equalTo(1));
assertThat(resp.getHits().getAt(0).getId(), equalTo("doc_2"));
assertThat(resp.getHits().getAt(0).getExplanation().isMatch(), equalTo(true));
@ -564,8 +564,8 @@ public class RRFRetrieverBuilderIT extends ESIntegTestCase {
ElasticsearchAssertions.assertResponse(req, resp -> {
assertNull(resp.pointInTimeId());
assertNotNull(resp.getHits().getTotalHits());
assertThat(resp.getHits().getTotalHits().value, equalTo(6L));
assertThat(resp.getHits().getTotalHits().relation, equalTo(TotalHits.Relation.EQUAL_TO));
assertThat(resp.getHits().getTotalHits().value(), equalTo(6L));
assertThat(resp.getHits().getTotalHits().relation(), equalTo(TotalHits.Relation.EQUAL_TO));
assertThat(resp.getHits().getHits().length, equalTo(1));
assertThat(resp.getHits().getAt(0).getId(), equalTo("doc_6"));
assertThat(resp.getHits().getAt(0).getExplanation().isMatch(), equalTo(true));
@ -733,14 +733,14 @@ public class RRFRetrieverBuilderIT extends ESIntegTestCase {
);
assertResponse(
client().prepareSearch(INDEX).setSource(new SearchSourceBuilder().retriever(rrf)),
searchResponse -> assertThat(searchResponse.getHits().getTotalHits().value, is(4L))
searchResponse -> assertThat(searchResponse.getHits().getTotalHits().value(), is(4L))
);
assertThat(numAsyncCalls.get(), equalTo(2));
// check that we use the rewritten vector to build the explain query
assertResponse(
client().prepareSearch(INDEX).setSource(new SearchSourceBuilder().retriever(rrf).explain(true)),
searchResponse -> assertThat(searchResponse.getHits().getTotalHits().value, is(4L))
searchResponse -> assertThat(searchResponse.getHits().getTotalHits().value(), is(4L))
);
assertThat(numAsyncCalls.get(), equalTo(4));
}

View file

@ -167,8 +167,8 @@ public class RRFRetrieverBuilderNestedDocsIT extends RRFRetrieverBuilderIT {
ElasticsearchAssertions.assertResponse(req, resp -> {
assertNull(resp.pointInTimeId());
assertNotNull(resp.getHits().getTotalHits());
assertThat(resp.getHits().getTotalHits().value, equalTo(3L));
assertThat(resp.getHits().getTotalHits().relation, equalTo(TotalHits.Relation.EQUAL_TO));
assertThat(resp.getHits().getTotalHits().value(), equalTo(3L));
assertThat(resp.getHits().getTotalHits().relation(), equalTo(TotalHits.Relation.EQUAL_TO));
assertThat(resp.getHits().getAt(0).getId(), equalTo("doc_6"));
assertThat((double) resp.getHits().getAt(0).getScore(), closeTo(0.1742, 1e-4));
assertThat(