Browse Source

Upgrade to lucene-9.6.0-snapshot-f5d1e1c787c. (#94494)

Adrien Grand 2 years ago
parent
commit
b56c2df203
28 changed files with 219 additions and 116 deletions
  1. 1 1
      build-tools-internal/version.properties
  2. 2 2
      docs/Versions.asciidoc
  3. 5 0
      docs/changelog/94494.yaml
  4. 121 1
      gradle/verification-metadata.xml
  5. 1 1
      modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/MatchOnlyTextFieldMapper.java
  6. 4 2
      modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/SearchAsYouTypeFieldMapper.java
  7. 4 4
      modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/extras/SearchAsYouTypeFieldTypeTests.java
  8. 1 12
      modules/parent-join/src/test/java/org/elasticsearch/join/query/HasChildQueryBuilderTests.java
  9. 1 1
      server/src/main/java/org/elasticsearch/Version.java
  10. 11 0
      server/src/main/java/org/elasticsearch/index/mapper/CustomDocValuesField.java
  11. 2 1
      server/src/main/java/org/elasticsearch/index/mapper/DocumentParserContext.java
  12. 2 1
      server/src/main/java/org/elasticsearch/index/mapper/IdFieldMapper.java
  13. 6 2
      server/src/main/java/org/elasticsearch/index/mapper/KeywordFieldMapper.java
  14. 1 2
      server/src/main/java/org/elasticsearch/index/mapper/LegacyTypeFieldMapper.java
  15. 4 18
      server/src/main/java/org/elasticsearch/index/mapper/ProvidedIdFieldMapper.java
  16. 2 1
      server/src/main/java/org/elasticsearch/index/mapper/TextFieldMapper.java
  17. 3 11
      server/src/main/java/org/elasticsearch/index/mapper/TsidExtractingIdFieldMapper.java
  18. 5 1
      server/src/main/java/org/elasticsearch/index/query/support/QueryParsers.java
  19. 1 1
      server/src/main/java/org/elasticsearch/script/field/vectors/ByteKnnDenseVector.java
  20. 10 3
      server/src/test/java/org/elasticsearch/deps/lucene/VectorHighlighterTests.java
  21. 4 23
      server/src/test/java/org/elasticsearch/index/engine/InternalEngineTests.java
  22. 5 5
      server/src/test/java/org/elasticsearch/index/mapper/ConstantScoreTextFieldTypeTests.java
  23. 2 6
      server/src/test/java/org/elasticsearch/index/mapper/KeywordFieldTypeTests.java
  24. 5 5
      server/src/test/java/org/elasticsearch/index/mapper/TextFieldTypeTests.java
  25. 4 4
      server/src/test/java/org/elasticsearch/index/mapper/flattened/KeyedFlattenedFieldTypeTests.java
  26. 4 4
      server/src/test/java/org/elasticsearch/index/query/QueryStringQueryBuilderTests.java
  27. 2 2
      server/src/test/java/org/elasticsearch/search/aggregations/support/TimeSeriesIndexSearcherTests.java
  28. 6 2
      test/framework/src/main/java/org/elasticsearch/test/AbstractQueryTestCase.java

+ 1 - 1
build-tools-internal/version.properties

@@ -1,5 +1,5 @@
 elasticsearch     = 8.8.0
-lucene            = 9.5.0
+lucene            = 9.6.0-snapshot-f5d1e1c787c
 
 bundled_jdk_vendor = openjdk
 bundled_jdk = 19.0.2+7@fdb695a9d9064ad6b064dc6df578380c

+ 2 - 2
docs/Versions.asciidoc

@@ -1,8 +1,8 @@
 
 include::{docs-root}/shared/versions/stack/{source_branch}.asciidoc[]
 
-:lucene_version:        9.5.0
-:lucene_version_path:   9_5_0
+:lucene_version:        9.6.0
+:lucene_version_path:   9_6_0
 :jdk:                   11.0.2
 :jdk_major:             11
 :build_type:            tar

+ 5 - 0
docs/changelog/94494.yaml

@@ -0,0 +1,5 @@
+pr: 94494
+summary: Upgrade to lucene-9.6.0-snapshot-f5d1e1c787c
+area: Search
+type: upgrade
+issues: []

+ 121 - 1
gradle/verification-metadata.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<verification-metadata xmlns="https://schema.gradle.org/dependency-verification" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://schema.gradle.org/dependency-verification https://schema.gradle.org/dependency-verification/dependency-verification-1.1.xsd">
+<verification-metadata xmlns="https://schema.gradle.org/dependency-verification" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://schema.gradle.org/dependency-verification https://schema.gradle.org/dependency-verification/dependency-verification-1.2.xsd">
    <configuration>
       <verify-metadata>false</verify-metadata>
       <verify-signatures>false</verify-signatures>
@@ -2416,121 +2416,241 @@
             <sha256 value="1dd59135fc0e141788f5a8eb3d8a5ba40eddb18cefad4e3dbc14f3c55198dfc1" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-analysis-common" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-analysis-common-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="6085d1b62ac44f128e65d29bb9ab6075c3a1a03e36f0c9f9805da8cc7a041196" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-analysis-icu" version="9.5.0">
          <artifact name="lucene-analysis-icu-9.5.0.jar">
             <sha256 value="bc44433bd25b2f1f38412dd062dde0318f51fc1ff551af60d1b325bfc4ff7649" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-analysis-icu" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-analysis-icu-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="c79d208aea4e6ece4cab38759118690e168a6263a5d922404879f9d9dc8ee10f" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-analysis-kuromoji" version="9.5.0">
          <artifact name="lucene-analysis-kuromoji-9.5.0.jar">
             <sha256 value="ddfe972a178e638a40ec57c94e8d1ca4cde9f671cd98938d0444aa91bcbe9972" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-analysis-kuromoji" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-analysis-kuromoji-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="d8740786952f7c0360ecfbbe3141964eababdbf9d603d51314f4b61f3bd74ebd" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-analysis-morfologik" version="9.5.0">
          <artifact name="lucene-analysis-morfologik-9.5.0.jar">
             <sha256 value="d9242040bbd354dcb90680310c14648c52799585523f44d105c93c36a6a99317" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-analysis-morfologik" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-analysis-morfologik-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="76cb3c38c14bf9d89d6a03b65c8b89b279ba141be68c251d4979fa795a0991e6" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-analysis-nori" version="9.5.0">
          <artifact name="lucene-analysis-nori-9.5.0.jar">
             <sha256 value="f91d9b8f08d9db3c4cc044a6cfc457284f0575dad585403fa0f17f6396143bad" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-analysis-nori" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-analysis-nori-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="0ec076ccac59823f8ffc2892ca0e9859800bc8e4e9c0f7cca36ffe8bd25f5d70" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-analysis-phonetic" version="9.5.0">
          <artifact name="lucene-analysis-phonetic-9.5.0.jar">
             <sha256 value="6b2b2d4314b36546f70c36e9c8481acd7d532a2ec9587a64318bb544303d4cd4" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-analysis-phonetic" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-analysis-phonetic-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="4fe4b1612f6a83b02224dc5b4d90e3b799dcaeead8cc2d718e7a03fe0f720b17" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-analysis-smartcn" version="9.5.0">
          <artifact name="lucene-analysis-smartcn-9.5.0.jar">
             <sha256 value="5fda65dd7975f30a7ab3157af4082f6687d736c3d39ac0e5b9299acd22d0b3ac" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-analysis-smartcn" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-analysis-smartcn-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="1a71fdf906dd3f155cb7e163d66a81e93ef88da8e8f935db9d735855ca94e021" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-analysis-stempel" version="9.5.0">
          <artifact name="lucene-analysis-stempel-9.5.0.jar">
             <sha256 value="d6c19af6a6848660fcdad29f7046f2113715c7c50f38904751c46f7054e78e15" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-analysis-stempel" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-analysis-stempel-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="06c0bac9e537ef3387144b2fdfbd54d4c7fe4fb191b73608f626ed4ce4f82b16" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-backward-codecs" version="9.5.0">
          <artifact name="lucene-backward-codecs-9.5.0.jar">
             <sha256 value="407f16e131e13f626608b82185ef0ed70ecfb1356d0d265042101934795578bb" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-backward-codecs" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-backward-codecs-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="609e8b04cdca91a20ed3c450cfb567e949f8aed64ec698aca1eea93cc7b71a49" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-codecs" version="9.5.0">
          <artifact name="lucene-codecs-9.5.0.jar">
             <sha256 value="4e6ab97b47af716a1f2d6afb4355ee4e0109df7381f278837cf10481ee4c6785" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-codecs" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-codecs-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="47f4364d3baa6148214cc6be963f8a01facf02bddb283683fecb7b082d2f9bad" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-core" version="9.5.0">
          <artifact name="lucene-core-9.5.0.jar">
             <sha256 value="b1f37bf3573d8221d659ad97a239fcdbd49809937564d49d2ccf5c3dc26ba0ea" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-core" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-core-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="bacb89ed9f030840f3b59380b38651e249cf22e85bf85d44e10625420563849d" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-expressions" version="9.5.0">
          <artifact name="lucene-expressions-9.5.0.jar">
             <sha256 value="153e1fee71e4deeb6e0a7d82bdafa7e17d64ee418c61068cc2657b496c447db2" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-expressions" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-expressions-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="729af8e5543834dfa4a5c183c3fd96f52b7f714196ed7a1f621d2925bbb9d519" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-grouping" version="9.5.0">
          <artifact name="lucene-grouping-9.5.0.jar">
             <sha256 value="8bbda497572ba3c13154be176156203ac46325c02c741ff1eaba118b852f8623" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-grouping" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-grouping-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="42a64ee820357a46c37a726b4732b1175898ee0fda3114ea7951d88e7ad4f859" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-highlighter" version="9.5.0">
          <artifact name="lucene-highlighter-9.5.0.jar">
             <sha256 value="be15113ba91aa033ae8c79abd44df43f22de36428a2849a52a244183553bb253" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-highlighter" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-highlighter-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="27b7f08d40540cb9a88982ec01ed6ca7158c336144c6b1a847537e62f61b98ae" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-join" version="9.5.0">
          <artifact name="lucene-join-9.5.0.jar">
             <sha256 value="a723b89c619052bc353111ac7afe08249d30f232a6efb7d8c8bd3a37f76d1f16" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-join" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-join-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="69d5f5499535404e96f307ec4c02c91174ad127ad54356d2d201533d4581139b" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-memory" version="9.5.0">
          <artifact name="lucene-memory-9.5.0.jar">
             <sha256 value="b24a9b4abc743c1c762aa47e0d37bc4fbaad784625b3c7c8c5beb310a6714b68" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-memory" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-memory-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="75f5a8c565c1d1b5534a37514d7fb309d548b8b0608a3bef8b6237534581026f" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-misc" version="9.5.0">
          <artifact name="lucene-misc-9.5.0.jar">
             <sha256 value="7f80c756c88e8ac8bcb92cbf1d0c55deb9eb3186ab74d39cb8ed571460dcbbb6" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-misc" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-misc-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="c23f76d31d55b6d01790ddf97ceb60d680f051d1a447aad44ea432a334b44040" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-queries" version="9.5.0">
          <artifact name="lucene-queries-9.5.0.jar">
             <sha256 value="4a9f394050ad2ae7d6917dcd7402f8d0c27c95f303f3996dd71c418d63a76f71" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-queries" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-queries-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="c4ac53403df4793c433a08706bd43fb6d4631735cb5901f8d0cc0f1caaa6c193" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-queryparser" version="9.5.0">
          <artifact name="lucene-queryparser-9.5.0.jar">
             <sha256 value="a75727f6c3d902e2df095b8cab7f276318babae957931c1d12722865e9af865c" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-queryparser" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-queryparser-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="cf723318fd0750fe26c68744d3e42c4c78b1d2ba333b8f42ff203c3bed312d8c" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-sandbox" version="9.5.0">
          <artifact name="lucene-sandbox-9.5.0.jar">
             <sha256 value="913a025d8c6f7e5dc42bf3a9cded88f2e05ac702be9c7edc359f3db6c149e065" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-sandbox" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-sandbox-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="5fc69f80a8fca64042338d0091fc267952d6e4266d77c832ce4716df0b054569" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-spatial-extras" version="9.5.0">
          <artifact name="lucene-spatial-extras-9.5.0.jar">
             <sha256 value="9bcc1a8e21b21fbdb49250d4d5ccda46c20d275bca33abc99136cae3aa4fac53" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-spatial-extras" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-spatial-extras-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="4ed7384bf2331e08302d33cbfb6e913574a16d744572cb937231c56b5a8be434" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-spatial3d" version="9.5.0">
          <artifact name="lucene-spatial3d-9.5.0.jar">
             <sha256 value="40968f818eb38fd6c15057f68b665325396d89e8ebb8523532fa0326544c06b6" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-spatial3d" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-spatial3d-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="f78d0f4160a9b4b3f8a7f43a6b5b9c8e5512d3e2a0b4a074d1e450c293033af8" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-suggest" version="9.5.0">
          <artifact name="lucene-suggest-9.5.0.jar">
             <sha256 value="f8fe43e8db331060ad58df9a44a8f1fa4937ad62b718cdde484d308c4bb5c83d" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-suggest" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-suggest-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="ef4c76779f3818422a2a8647e6fb2369d1adfe8b7bcea88d9f07a97e1a73aaf2" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.lucene" name="lucene-test-framework" version="9.5.0">
          <artifact name="lucene-test-framework-9.5.0.jar">
             <sha256 value="e22ce1393c4bfb80cce5cac81c766ce2c4588e18128903c94b5e3942e29f5509" origin="Generated by Gradle"/>
          </artifact>
       </component>
+      <component group="org.apache.lucene" name="lucene-test-framework" version="9.6.0-snapshot-f5d1e1c787c">
+         <artifact name="lucene-test-framework-9.6.0-snapshot-f5d1e1c787c.jar">
+            <sha256 value="feed24275f58d27d2eef575a775bb5e1193055b17dd2495a9a5bf65a51d61b52" origin="Generated by Gradle"/>
+         </artifact>
+      </component>
       <component group="org.apache.maven" name="maven-model" version="3.6.2">
          <artifact name="maven-model-3.6.2.jar">
             <sha256 value="f4ada31d7217efc11d2264dec3716623cefa3440cfb2b6b1dcc640a825159a7d" origin="Generated by Gradle"/>

+ 1 - 1
modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/MatchOnlyTextFieldMapper.java

@@ -285,7 +285,7 @@ public class MatchOnlyTextFieldMapper extends FieldMapper {
                 prefixLength,
                 128,
                 transpositions,
-                MultiTermQuery.CONSTANT_SCORE_REWRITE
+                MultiTermQuery.CONSTANT_SCORE_BLENDED_REWRITE
             );
             IntervalsSource fuzzyIntervals = Intervals.multiterm(fuzzyQuery.getAutomata(), term);
             return toIntervalsSource(fuzzyIntervals, fuzzyQuery, context);

+ 4 - 2
modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/SearchAsYouTypeFieldMapper.java

@@ -351,7 +351,8 @@ public class SearchAsYouTypeFieldMapper extends FieldMapper {
                 final Query query = prefixField.prefixQuery(value, method, caseInsensitive, context);
                 if (method == null
                     || method == MultiTermQuery.CONSTANT_SCORE_REWRITE
-                    || method == MultiTermQuery.CONSTANT_SCORE_BOOLEAN_REWRITE) {
+                    || method == MultiTermQuery.CONSTANT_SCORE_BOOLEAN_REWRITE
+                    || method == MultiTermQuery.CONSTANT_SCORE_BLENDED_REWRITE) {
                     return new ConstantScoreQuery(query);
                 } else {
                     return query;
@@ -611,7 +612,8 @@ public class SearchAsYouTypeFieldMapper extends FieldMapper {
                 final Query query = prefixFieldType.prefixQuery(value, method, caseInsensitive, context);
                 if (method == null
                     || method == MultiTermQuery.CONSTANT_SCORE_REWRITE
-                    || method == MultiTermQuery.CONSTANT_SCORE_BOOLEAN_REWRITE) {
+                    || method == MultiTermQuery.CONSTANT_SCORE_BOOLEAN_REWRITE
+                    || method == MultiTermQuery.CONSTANT_SCORE_BLENDED_REWRITE) {
                     return new ConstantScoreQuery(query);
                 } else {
                     return query;

+ 4 - 4
modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/extras/SearchAsYouTypeFieldTypeTests.java

@@ -31,7 +31,7 @@ import java.util.Collections;
 import java.util.List;
 
 import static java.util.Arrays.asList;
-import static org.apache.lucene.search.MultiTermQuery.CONSTANT_SCORE_REWRITE;
+import static org.apache.lucene.search.MultiTermQuery.CONSTANT_SCORE_BLENDED_REWRITE;
 import static org.hamcrest.Matchers.equalTo;
 
 public class SearchAsYouTypeFieldTypeTests extends FieldTypeTestCase {
@@ -109,7 +109,7 @@ public class SearchAsYouTypeFieldTypeTests extends FieldTypeTestCase {
         // this term should be a length that can be rewriteable to a term query on the prefix field
         final String withinBoundsTerm = "foo";
         assertThat(
-            fieldType.prefixQuery(withinBoundsTerm, randomBoolean() ? CONSTANT_SCORE_REWRITE : null, randomMockContext()),
+            fieldType.prefixQuery(withinBoundsTerm, randomBoolean() ? CONSTANT_SCORE_BLENDED_REWRITE : null, randomMockContext()),
             equalTo(new ConstantScoreQuery(new TermQuery(new Term(NAME + "._index_prefix", withinBoundsTerm))))
         );
 
@@ -118,13 +118,13 @@ public class SearchAsYouTypeFieldTypeTests extends FieldTypeTestCase {
         // this term should be too long to be rewriteable to a term query on the prefix field
         final String longTerm = "toolongforourprefixfieldthistermis";
         assertThat(
-            fieldType.prefixQuery(longTerm, randomBoolean() ? null : CONSTANT_SCORE_REWRITE, MOCK_CONTEXT),
+            fieldType.prefixQuery(longTerm, randomBoolean() ? null : CONSTANT_SCORE_BLENDED_REWRITE, MOCK_CONTEXT),
             equalTo(new PrefixQuery(new Term(NAME, longTerm)))
         );
 
         ElasticsearchException ee = expectThrows(
             ElasticsearchException.class,
-            () -> fieldType.prefixQuery(longTerm, randomBoolean() ? null : CONSTANT_SCORE_REWRITE, MOCK_CONTEXT_DISALLOW_EXPENSIVE)
+            () -> fieldType.prefixQuery(longTerm, randomBoolean() ? null : CONSTANT_SCORE_BLENDED_REWRITE, MOCK_CONTEXT_DISALLOW_EXPENSIVE)
         );
         assertEquals(
             "[prefix] queries cannot be executed when 'search.allow_expensive_queries' is set to false. "

+ 1 - 12
modules/parent-join/src/test/java/org/elasticsearch/join/query/HasChildQueryBuilderTests.java

@@ -13,7 +13,6 @@ import com.carrotsearch.randomizedtesting.generators.RandomPicks;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
-import org.apache.lucene.search.ConstantScoreQuery;
 import org.apache.lucene.search.MatchNoDocsQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermInSetQuery;
@@ -344,17 +343,7 @@ public class HasChildQueryBuilderTests extends AbstractQueryTestCase<HasChildQue
         assertThat(booleanQuery.clauses().get(0).getOccur(), equalTo(BooleanClause.Occur.MUST));
         assertThat(booleanQuery.clauses().get(0).getQuery(), instanceOf(TermInSetQuery.class));
         TermInSetQuery termsQuery = (TermInSetQuery) booleanQuery.clauses().get(0).getQuery();
-        Query rewrittenTermsQuery = termsQuery.rewrite(null);
-        assertThat(rewrittenTermsQuery, instanceOf(ConstantScoreQuery.class));
-        ConstantScoreQuery constantScoreQuery = (ConstantScoreQuery) rewrittenTermsQuery;
-        assertThat(constantScoreQuery.getQuery(), instanceOf(BooleanQuery.class));
-        BooleanQuery booleanTermsQuery = (BooleanQuery) constantScoreQuery.getQuery();
-        assertThat(booleanTermsQuery.clauses().toString(), booleanTermsQuery.clauses().size(), equalTo(1));
-        assertThat(booleanTermsQuery.clauses().get(0).getOccur(), equalTo(BooleanClause.Occur.SHOULD));
-        assertThat(booleanTermsQuery.clauses().get(0).getQuery(), instanceOf(TermQuery.class));
-        TermQuery termQuery = (TermQuery) booleanTermsQuery.clauses().get(0).getQuery();
-        assertThat(termQuery.getTerm().field(), equalTo(IdFieldMapper.NAME));
-        assertThat(termQuery.getTerm().bytes(), equalTo(Uid.encodeId(id)));
+        assertEquals(new TermInSetQuery(IdFieldMapper.NAME, Uid.encodeId(id)), termsQuery);
         // check the type filter
         assertThat(booleanQuery.clauses().get(1).getOccur(), equalTo(BooleanClause.Occur.FILTER));
         assertEquals(new TermQuery(new Term("join_field", type)), booleanQuery.clauses().get(1).getQuery());

+ 1 - 1
server/src/main/java/org/elasticsearch/Version.java

@@ -138,7 +138,7 @@ public class Version implements Comparable<Version>, ToXContentFragment {
     public static final Version V_8_6_3 = new Version(8_06_03_99, TransportVersion.V_8_6_3, org.apache.lucene.util.Version.LUCENE_9_4_2);
     public static final Version V_8_7_0 = new Version(8_07_00_99, TransportVersion.V_8_7_0, org.apache.lucene.util.Version.LUCENE_9_5_0);
 
-    public static final Version V_8_8_0 = new Version(8_08_00_99, TransportVersion.V_8_8_0, org.apache.lucene.util.Version.LUCENE_9_5_0);
+    public static final Version V_8_8_0 = new Version(8_08_00_99, TransportVersion.V_8_8_0, org.apache.lucene.util.Version.LUCENE_9_6_0);
     public static final Version CURRENT = V_8_8_0;
 
     private static final NavigableMap<Integer, Version> VERSION_IDS;

+ 11 - 0
server/src/main/java/org/elasticsearch/index/mapper/CustomDocValuesField.java

@@ -11,6 +11,8 @@ package org.elasticsearch.index.mapper;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.document.FieldType;
+import org.apache.lucene.document.InvertableType;
+import org.apache.lucene.document.StoredValue;
 import org.apache.lucene.index.DocValuesType;
 import org.apache.lucene.index.IndexableField;
 import org.apache.lucene.index.IndexableFieldType;
@@ -63,4 +65,13 @@ public abstract class CustomDocValuesField implements IndexableField {
         return null;
     }
 
+    @Override
+    public StoredValue storedValue() {
+        return null;
+    }
+
+    @Override
+    public InvertableType invertableType() {
+        return InvertableType.BINARY;
+    }
 }

+ 2 - 1
server/src/main/java/org/elasticsearch/index/mapper/DocumentParserContext.java

@@ -9,6 +9,7 @@
 package org.elasticsearch.index.mapper;
 
 import org.apache.lucene.document.Field;
+import org.apache.lucene.document.StringField;
 import org.apache.lucene.index.IndexableField;
 import org.elasticsearch.common.time.DateFormatter;
 import org.elasticsearch.index.IndexSettings;
@@ -332,7 +333,7 @@ public abstract class DocumentParserContext {
             // We just need to store the id as indexed field, so that IndexWriter#deleteDocuments(term) can then
             // delete it when the root document is deleted too.
             // NOTE: we don't support nested fields in tsdb so it's safe to assume the standard id mapper.
-            doc.add(new Field(IdFieldMapper.NAME, idField.binaryValue(), ProvidedIdFieldMapper.Defaults.NESTED_FIELD_TYPE));
+            doc.add(new StringField(IdFieldMapper.NAME, idField.binaryValue(), Field.Store.NO));
         } else {
             throw new IllegalStateException("The root document of a nested document should have an _id field");
         }

+ 2 - 1
server/src/main/java/org/elasticsearch/index/mapper/IdFieldMapper.java

@@ -9,6 +9,7 @@
 package org.elasticsearch.index.mapper;
 
 import org.apache.lucene.document.Field;
+import org.apache.lucene.document.StringField;
 import org.elasticsearch.common.lucene.Lucene;
 import org.elasticsearch.index.analysis.NamedAnalyzer;
 
@@ -69,6 +70,6 @@ public abstract class IdFieldMapper extends MetadataFieldMapper {
      * the {@code _id} so it can be fetched easily from the index.
      */
     public static Field standardIdField(String id) {
-        return new Field(NAME, Uid.encodeId(id), ProvidedIdFieldMapper.Defaults.FIELD_TYPE);
+        return new StringField(NAME, Uid.encodeId(id), Field.Store.YES);
     }
 }

+ 6 - 2
server/src/main/java/org/elasticsearch/index/mapper/KeywordFieldMapper.java

@@ -14,6 +14,7 @@ import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldType;
+import org.apache.lucene.document.InvertableType;
 import org.apache.lucene.document.SortedSetDocValuesField;
 import org.apache.lucene.document.StoredField;
 import org.apache.lucene.index.DocValuesType;
@@ -23,7 +24,6 @@ import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.index.MultiTerms;
 import org.apache.lucene.index.Terms;
 import org.apache.lucene.index.TermsEnum;
-import org.apache.lucene.sandbox.search.DocValuesTermsQuery;
 import org.apache.lucene.search.MultiTermQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.util.BytesRef;
@@ -113,6 +113,10 @@ public final class KeywordFieldMapper extends FieldMapper {
             super(field, term, ft);
         }
 
+        @Override
+        public InvertableType invertableType() {
+            return InvertableType.BINARY;
+        }
     }
 
     private static TextSearchInfo textSearchInfo(
@@ -435,7 +439,7 @@ public final class KeywordFieldMapper extends FieldMapper {
                 return super.termsQuery(values, context);
             } else {
                 BytesRef[] bytesRefs = values.stream().map(this::indexedValueForSearch).toArray(BytesRef[]::new);
-                return new DocValuesTermsQuery(name(), bytesRefs);
+                return SortedSetDocValuesField.newSlowSetQuery(name(), bytesRefs);
             }
         }
 

+ 1 - 2
server/src/main/java/org/elasticsearch/index/mapper/LegacyTypeFieldMapper.java

@@ -9,7 +9,6 @@
 package org.elasticsearch.index.mapper;
 
 import org.apache.lucene.document.SortedSetDocValuesField;
-import org.apache.lucene.sandbox.search.DocValuesTermsQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.util.BytesRef;
 import org.elasticsearch.common.lucene.Lucene;
@@ -71,7 +70,7 @@ public class LegacyTypeFieldMapper extends MetadataFieldMapper {
         @Override
         public Query termsQuery(Collection<?> values, SearchExecutionContext context) {
             BytesRef[] bytesRefs = values.stream().map(this::indexedValueForSearch).toArray(BytesRef[]::new);
-            return new DocValuesTermsQuery(name(), bytesRefs);
+            return SortedSetDocValuesField.newSlowSetQuery(name(), bytesRefs);
         }
 
         @Override

+ 4 - 18
server/src/main/java/org/elasticsearch/index/mapper/ProvidedIdFieldMapper.java

@@ -9,7 +9,7 @@
 package org.elasticsearch.index.mapper;
 
 import org.apache.lucene.document.FieldType;
-import org.apache.lucene.index.IndexOptions;
+import org.apache.lucene.document.StringField;
 import org.apache.lucene.index.LeafReaderContext;
 import org.apache.lucene.search.MatchAllDocsQuery;
 import org.apache.lucene.search.Query;
@@ -61,23 +61,9 @@ public class ProvidedIdFieldMapper extends IdFieldMapper {
 
     public static class Defaults {
 
-        public static final FieldType FIELD_TYPE = new FieldType();
-        public static final FieldType NESTED_FIELD_TYPE;
-
-        static {
-            FIELD_TYPE.setTokenized(false);
-            FIELD_TYPE.setIndexOptions(IndexOptions.DOCS);
-            FIELD_TYPE.setStored(true);
-            FIELD_TYPE.setOmitNorms(true);
-            FIELD_TYPE.freeze();
-
-            NESTED_FIELD_TYPE = new FieldType();
-            NESTED_FIELD_TYPE.setTokenized(false);
-            NESTED_FIELD_TYPE.setIndexOptions(IndexOptions.DOCS);
-            NESTED_FIELD_TYPE.setStored(false);
-            NESTED_FIELD_TYPE.setOmitNorms(true);
-            NESTED_FIELD_TYPE.freeze();
-        }
+        public static final FieldType FIELD_TYPE = StringField.TYPE_STORED;
+        public static final FieldType NESTED_FIELD_TYPE = StringField.TYPE_NOT_STORED;
+
     }
 
     public static final ProvidedIdFieldMapper NO_FIELD_DATA = new ProvidedIdFieldMapper(() -> false);

+ 2 - 1
server/src/main/java/org/elasticsearch/index/mapper/TextFieldMapper.java

@@ -792,7 +792,8 @@ public class TextFieldMapper extends FieldMapper {
             Query tq = prefixFieldType.prefixQuery(value, method, caseInsensitive, context);
             if (method == null
                 || method == MultiTermQuery.CONSTANT_SCORE_REWRITE
-                || method == MultiTermQuery.CONSTANT_SCORE_BOOLEAN_REWRITE) {
+                || method == MultiTermQuery.CONSTANT_SCORE_BOOLEAN_REWRITE
+                || method == MultiTermQuery.CONSTANT_SCORE_BLENDED_REWRITE) {
                 return new ConstantScoreQuery(tq);
             }
             return tq;

+ 3 - 11
server/src/main/java/org/elasticsearch/index/mapper/TsidExtractingIdFieldMapper.java

@@ -10,7 +10,7 @@ package org.elasticsearch.index.mapper;
 
 import org.apache.lucene.document.Field;
 import org.apache.lucene.document.FieldType;
-import org.apache.lucene.index.IndexOptions;
+import org.apache.lucene.document.StringField;
 import org.apache.lucene.index.IndexableField;
 import org.apache.lucene.search.MatchAllDocsQuery;
 import org.apache.lucene.search.Query;
@@ -34,20 +34,12 @@ import java.util.Locale;
  * {@code _tsid} and {@code @timestamp}.
  */
 public class TsidExtractingIdFieldMapper extends IdFieldMapper {
-    public static final FieldType FIELD_TYPE = new FieldType();
+    public static final FieldType FIELD_TYPE = StringField.TYPE_STORED;
     /**
      * Maximum length of the {@code _tsid} in the {@link #documentDescription}.
      */
     static final int DESCRIPTION_TSID_LIMIT = 1000;
 
-    static {
-        FIELD_TYPE.setTokenized(false);
-        FIELD_TYPE.setIndexOptions(IndexOptions.DOCS);
-        FIELD_TYPE.setStored(true);  // TODO reconstruct the id on fetch from tsid and timestamp
-        FIELD_TYPE.setOmitNorms(true);
-        FIELD_TYPE.freeze();
-    }
-
     public static final TsidExtractingIdFieldMapper INSTANCE = new TsidExtractingIdFieldMapper();
 
     public static final TypeParser PARSER = new FixedTypeParser(MappingParserContext::idFieldMapper);
@@ -149,7 +141,7 @@ public class TsidExtractingIdFieldMapper extends IdFieldMapper {
         context.id(id);
 
         BytesRef uidEncoded = Uid.encodeId(context.id());
-        context.doc().add(new Field(NAME, uidEncoded, FIELD_TYPE));
+        context.doc().add(new StringField(NAME, uidEncoded, Field.Store.YES));
     }
 
     public static String createId(

+ 5 - 1
server/src/main/java/org/elasticsearch/index/query/support/QueryParsers.java

@@ -18,6 +18,7 @@ public final class QueryParsers {
     public static final ParseField CONSTANT_SCORE = new ParseField("constant_score");
     public static final ParseField SCORING_BOOLEAN = new ParseField("scoring_boolean");
     public static final ParseField CONSTANT_SCORE_BOOLEAN = new ParseField("constant_score_boolean");
+    public static final ParseField CONSTANT_SCORE_BLENDED = new ParseField("constant_score_blended");
     public static final ParseField TOP_TERMS = new ParseField("top_terms_");
     public static final ParseField TOP_TERMS_BOOST = new ParseField("top_terms_boost_");
     public static final ParseField TOP_TERMS_BLENDED_FREQS = new ParseField("top_terms_blended_freqs_");
@@ -27,7 +28,7 @@ public final class QueryParsers {
     }
 
     public static MultiTermQuery.RewriteMethod parseRewriteMethod(@Nullable String rewriteMethod, DeprecationHandler deprecationHandler) {
-        return parseRewriteMethod(rewriteMethod, MultiTermQuery.CONSTANT_SCORE_REWRITE, deprecationHandler);
+        return parseRewriteMethod(rewriteMethod, MultiTermQuery.CONSTANT_SCORE_BLENDED_REWRITE, deprecationHandler);
     }
 
     public static MultiTermQuery.RewriteMethod parseRewriteMethod(
@@ -47,6 +48,9 @@ public final class QueryParsers {
         if (CONSTANT_SCORE_BOOLEAN.match(rewriteMethod, deprecationHandler)) {
             return MultiTermQuery.CONSTANT_SCORE_BOOLEAN_REWRITE;
         }
+        if (CONSTANT_SCORE_BLENDED.match(rewriteMethod, deprecationHandler)) {
+            return MultiTermQuery.CONSTANT_SCORE_BLENDED_REWRITE;
+        }
 
         int firstDigit = -1;
         for (int i = 0; i < rewriteMethod.length(); ++i) {

+ 1 - 1
server/src/main/java/org/elasticsearch/script/field/vectors/ByteKnnDenseVector.java

@@ -50,7 +50,7 @@ public class ByteKnnDenseVector implements DenseVector {
 
     @Override
     public int dotProduct(byte[] queryVector) {
-        return (int) VectorUtil.dotProduct(docVector, queryVector);
+        return VectorUtil.dotProduct(docVector, queryVector);
     }
 
     @Override

+ 10 - 3
server/src/test/java/org/elasticsearch/deps/lucene/VectorHighlighterTests.java

@@ -18,6 +18,7 @@ import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.MultiTermQuery;
 import org.apache.lucene.search.PrefixQuery;
 import org.apache.lucene.search.Query;
 import org.apache.lucene.search.TermQuery;
@@ -87,7 +88,10 @@ public class VectorHighlighterTests extends ESTestCase {
         FastVectorHighlighter highlighter = new FastVectorHighlighter();
 
         PrefixQuery prefixQuery = new PrefixQuery(new Term("content", "ba"));
-        assertThat(prefixQuery.getRewriteMethod().getClass().getName(), equalTo(PrefixQuery.CONSTANT_SCORE_REWRITE.getClass().getName()));
+        assertThat(
+            prefixQuery.getRewriteMethod().getClass().getName(),
+            equalTo(PrefixQuery.CONSTANT_SCORE_BLENDED_REWRITE.getClass().getName())
+        );
         String fragment = highlighter.getBestFragment(
             highlighter.getFieldQuery(prefixQuery),
             reader,
@@ -96,14 +100,17 @@ public class VectorHighlighterTests extends ESTestCase {
             30
         );
         assertThat(fragment, nullValue());
-        prefixQuery = new PrefixQuery(new Term("content", "ba"), PrefixQuery.SCORING_BOOLEAN_REWRITE);
+        prefixQuery = new PrefixQuery(new Term("content", "ba"), MultiTermQuery.SCORING_BOOLEAN_REWRITE);
         Query rewriteQuery = prefixQuery.rewrite(reader);
         fragment = highlighter.getBestFragment(highlighter.getFieldQuery(rewriteQuery), reader, topDocs.scoreDocs[0].doc, "content", 30);
         assertThat(fragment, notNullValue());
 
         // now check with the custom field query
         prefixQuery = new PrefixQuery(new Term("content", "ba"));
-        assertThat(prefixQuery.getRewriteMethod().getClass().getName(), equalTo(PrefixQuery.CONSTANT_SCORE_REWRITE.getClass().getName()));
+        assertThat(
+            prefixQuery.getRewriteMethod().getClass().getName(),
+            equalTo(PrefixQuery.CONSTANT_SCORE_BLENDED_REWRITE.getClass().getName())
+        );
         fragment = highlighter.getBestFragment(
             new CustomFieldQuery(prefixQuery, reader, highlighter),
             reader,

+ 4 - 23
server/src/test/java/org/elasticsearch/index/engine/InternalEngineTests.java

@@ -22,6 +22,7 @@ import org.apache.lucene.document.FieldType;
 import org.apache.lucene.document.LongPoint;
 import org.apache.lucene.document.NumericDocValuesField;
 import org.apache.lucene.document.StoredField;
+import org.apache.lucene.document.StoredValue;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.IndexCommit;
@@ -139,7 +140,6 @@ import org.hamcrest.Matchers;
 
 import java.io.Closeable;
 import java.io.IOException;
-import java.io.UncheckedIOException;
 import java.nio.charset.Charset;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -3766,27 +3766,8 @@ public class InternalEngineTests extends EngineTestCase {
                 assertNotNull(indexResult.getTranslogLocation());
                 engine.index(indexForDoc(doc2));
 
-                // test non document level failure is thrown
-                if (randomBoolean()) {
-                    // simulate close by corruption
-                    throwingIndexWriter.get().setThrowFailure(null);
-                    UncheckedIOException uncheckedIOException = expectThrows(UncheckedIOException.class, () -> {
-                        Engine.Index index = indexForDoc(doc3);
-                        index.parsedDoc().rootDoc().add(new StoredField("foo", "bar") {
-                            // this is a hack to add a failure during store document which triggers a tragic event
-                            // and in turn fails the engine
-                            @Override
-                            public BytesRef binaryValue() {
-                                throw new UncheckedIOException(new MockDirectoryWrapper.FakeIOException());
-                            }
-                        });
-                        engine.index(index);
-                    });
-                    assertTrue(uncheckedIOException.getCause() instanceof MockDirectoryWrapper.FakeIOException);
-                } else {
-                    // normal close
-                    engine.close();
-                }
+                engine.close();
+
                 // now the engine is closed check we respond correctly
                 expectThrows(AlreadyClosedException.class, () -> engine.index(indexForDoc(doc1)));
                 expectThrows(AlreadyClosedException.class, () -> engine.delete(new Engine.Delete("", newUid(doc1), primaryTerm.get())));
@@ -3816,7 +3797,7 @@ public class InternalEngineTests extends EngineTestCase {
                     doc.forEach(docIncludeExtraField::add);
                     docIncludeExtraField.add(new StoredField("foo", "bar") {
                         @Override
-                        public BytesRef binaryValue() {
+                        public StoredValue storedValue() {
                             throw tragicException;
                         }
                     });

+ 5 - 5
server/src/test/java/org/elasticsearch/index/mapper/ConstantScoreTextFieldTypeTests.java

@@ -39,7 +39,7 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
-import static org.apache.lucene.search.MultiTermQuery.CONSTANT_SCORE_REWRITE;
+import static org.apache.lucene.search.MultiTermQuery.CONSTANT_SCORE_BLENDED_REWRITE;
 import static org.hamcrest.Matchers.equalTo;
 
 public class ConstantScoreTextFieldTypeTests extends FieldTypeTestCase {
@@ -140,13 +140,13 @@ public class ConstantScoreTextFieldTypeTests extends FieldTypeTestCase {
         ConstantScoreTextFieldType ft = createFieldType();
         ft.setIndexPrefixes(2, 10);
 
-        Query q = ft.prefixQuery("goin", randomBoolean() ? null : CONSTANT_SCORE_REWRITE, false, randomMockContext());
+        Query q = ft.prefixQuery("goin", randomBoolean() ? null : CONSTANT_SCORE_BLENDED_REWRITE, false, randomMockContext());
         assertEquals(new ConstantScoreQuery(new TermQuery(new Term("field._index_prefix", "goin"))), q);
 
-        q = ft.prefixQuery("internationalisatio", randomBoolean() ? null : CONSTANT_SCORE_REWRITE, false, MOCK_CONTEXT);
+        q = ft.prefixQuery("internationalisatio", randomBoolean() ? null : CONSTANT_SCORE_BLENDED_REWRITE, false, MOCK_CONTEXT);
         assertEquals(new PrefixQuery(new Term("field", "internationalisatio")), q);
 
-        q = ft.prefixQuery("Internationalisatio", randomBoolean() ? null : CONSTANT_SCORE_REWRITE, true, MOCK_CONTEXT);
+        q = ft.prefixQuery("Internationalisatio", randomBoolean() ? null : CONSTANT_SCORE_BLENDED_REWRITE, true, MOCK_CONTEXT);
         assertEquals(AutomatonQueries.caseInsensitivePrefixQuery(new Term("field", "Internationalisatio")), q);
 
         ElasticsearchException ee = expectThrows(
@@ -159,7 +159,7 @@ public class ConstantScoreTextFieldTypeTests extends FieldTypeTestCase {
             ee.getMessage()
         );
 
-        q = ft.prefixQuery("g", randomBoolean() ? null : CONSTANT_SCORE_REWRITE, false, randomMockContext());
+        q = ft.prefixQuery("g", randomBoolean() ? null : CONSTANT_SCORE_BLENDED_REWRITE, false, randomMockContext());
         Automaton automaton = Operations.concatenate(Arrays.asList(Automata.makeChar('g'), Automata.makeAnyChar()));
 
         Query expected = new ConstantScoreQuery(

+ 2 - 6
server/src/test/java/org/elasticsearch/index/mapper/KeywordFieldTypeTests.java

@@ -19,7 +19,6 @@ import org.apache.lucene.analysis.standard.StandardAnalyzer;
 import org.apache.lucene.document.FieldType;
 import org.apache.lucene.document.SortedSetDocValuesField;
 import org.apache.lucene.index.Term;
-import org.apache.lucene.sandbox.search.DocValuesTermsQuery;
 import org.apache.lucene.search.FieldExistsQuery;
 import org.apache.lucene.search.FuzzyQuery;
 import org.apache.lucene.search.RegexpQuery;
@@ -45,7 +44,6 @@ import org.elasticsearch.index.mapper.MappedFieldType.Relation;
 import org.elasticsearch.script.ScriptCompiler;
 
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
@@ -103,13 +101,11 @@ public class KeywordFieldTypeTests extends FieldTypeTestCase {
 
     public void testTermsQuery() {
         MappedFieldType ft = new KeywordFieldType("field");
-        List<BytesRef> terms = new ArrayList<>();
-        terms.add(new BytesRef("foo"));
-        terms.add(new BytesRef("bar"));
+        BytesRef[] terms = new BytesRef[] { new BytesRef("foo"), new BytesRef("bar") };
         assertEquals(new TermInSetQuery("field", terms), ft.termsQuery(Arrays.asList("foo", "bar"), MOCK_CONTEXT));
 
         MappedFieldType ft2 = new KeywordFieldType("field", false, true, Map.of());
-        assertEquals(new DocValuesTermsQuery("field", terms), ft2.termsQuery(Arrays.asList("foo", "bar"), MOCK_CONTEXT));
+        assertEquals(SortedSetDocValuesField.newSlowSetQuery("field", terms), ft2.termsQuery(Arrays.asList("foo", "bar"), MOCK_CONTEXT));
 
         MappedFieldType unsearchable = new KeywordFieldType("field", false, false, Collections.emptyMap());
         IllegalArgumentException e = expectThrows(

+ 5 - 5
server/src/test/java/org/elasticsearch/index/mapper/TextFieldTypeTests.java

@@ -39,7 +39,7 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
-import static org.apache.lucene.search.MultiTermQuery.CONSTANT_SCORE_REWRITE;
+import static org.apache.lucene.search.MultiTermQuery.CONSTANT_SCORE_BLENDED_REWRITE;
 import static org.hamcrest.Matchers.equalTo;
 
 public class TextFieldTypeTests extends FieldTypeTestCase {
@@ -147,13 +147,13 @@ public class TextFieldTypeTests extends FieldTypeTestCase {
         TextFieldType ft = createFieldType();
         ft.setIndexPrefixes(2, 10);
 
-        Query q = ft.prefixQuery("goin", randomBoolean() ? null : CONSTANT_SCORE_REWRITE, false, randomMockContext());
+        Query q = ft.prefixQuery("goin", randomBoolean() ? null : CONSTANT_SCORE_BLENDED_REWRITE, false, randomMockContext());
         assertEquals(new ConstantScoreQuery(new TermQuery(new Term("field._index_prefix", "goin"))), q);
 
-        q = ft.prefixQuery("internationalisatio", randomBoolean() ? null : CONSTANT_SCORE_REWRITE, false, MOCK_CONTEXT);
+        q = ft.prefixQuery("internationalisatio", randomBoolean() ? null : CONSTANT_SCORE_BLENDED_REWRITE, false, MOCK_CONTEXT);
         assertEquals(new PrefixQuery(new Term("field", "internationalisatio")), q);
 
-        q = ft.prefixQuery("Internationalisatio", randomBoolean() ? null : CONSTANT_SCORE_REWRITE, true, MOCK_CONTEXT);
+        q = ft.prefixQuery("Internationalisatio", randomBoolean() ? null : CONSTANT_SCORE_BLENDED_REWRITE, true, MOCK_CONTEXT);
         assertEquals(AutomatonQueries.caseInsensitivePrefixQuery(new Term("field", "Internationalisatio")), q);
 
         ElasticsearchException ee = expectThrows(
@@ -166,7 +166,7 @@ public class TextFieldTypeTests extends FieldTypeTestCase {
             ee.getMessage()
         );
 
-        q = ft.prefixQuery("g", randomBoolean() ? null : CONSTANT_SCORE_REWRITE, false, randomMockContext());
+        q = ft.prefixQuery("g", randomBoolean() ? null : CONSTANT_SCORE_BLENDED_REWRITE, false, randomMockContext());
         Automaton automaton = Operations.concatenate(Arrays.asList(Automata.makeChar('g'), Automata.makeAnyChar()));
         Query expected = new ConstantScoreQuery(
             new BooleanQuery.Builder().add(new AutomatonQuery(new Term("field._index_prefix", "g*"), automaton), BooleanClause.Occur.SHOULD)

+ 4 - 4
server/src/test/java/org/elasticsearch/index/mapper/flattened/KeyedFlattenedFieldTypeTests.java

@@ -32,7 +32,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import static org.apache.lucene.search.MultiTermQuery.CONSTANT_SCORE_REWRITE;
+import static org.apache.lucene.search.MultiTermQuery.CONSTANT_SCORE_BLENDED_REWRITE;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -93,14 +93,14 @@ public class KeyedFlattenedFieldTypeTests extends FieldTypeTestCase {
         KeyedFlattenedFieldType ft = createFieldType();
 
         Query expected = new PrefixQuery(new Term(ft.name(), "key\0val"));
-        assertEquals(expected, ft.prefixQuery("val", randomBoolean() ? null : CONSTANT_SCORE_REWRITE, false, MOCK_CONTEXT));
+        assertEquals(expected, ft.prefixQuery("val", randomBoolean() ? null : CONSTANT_SCORE_BLENDED_REWRITE, false, MOCK_CONTEXT));
 
         expected = AutomatonQueries.caseInsensitivePrefixQuery(new Term(ft.name(), "key\0vAl"));
-        assertEquals(expected, ft.prefixQuery("vAl", randomBoolean() ? null : CONSTANT_SCORE_REWRITE, true, MOCK_CONTEXT));
+        assertEquals(expected, ft.prefixQuery("vAl", randomBoolean() ? null : CONSTANT_SCORE_BLENDED_REWRITE, true, MOCK_CONTEXT));
 
         ElasticsearchException ee = expectThrows(
             ElasticsearchException.class,
-            () -> ft.prefixQuery("val", randomBoolean() ? null : CONSTANT_SCORE_REWRITE, false, MOCK_CONTEXT_DISALLOW_EXPENSIVE)
+            () -> ft.prefixQuery("val", randomBoolean() ? null : CONSTANT_SCORE_BLENDED_REWRITE, false, MOCK_CONTEXT_DISALLOW_EXPENSIVE)
         );
         assertEquals(
             "[prefix] queries cannot be executed when 'search.allow_expensive_queries' is set to false. "

+ 4 - 4
server/src/test/java/org/elasticsearch/index/query/QueryStringQueryBuilderTests.java

@@ -532,7 +532,7 @@ public class QueryStringQueryBuilderTests extends AbstractQueryTestCase<QueryStr
             BooleanClause.Occur defaultOp = op.toBooleanClauseOccur();
             QueryStringQueryParser queryParser = new QueryStringQueryParser(createSearchExecutionContext(), TEXT_FIELD_NAME);
             queryParser.setAnalyzeWildcard(true);
-            queryParser.setMultiTermRewriteMethod(MultiTermQuery.CONSTANT_SCORE_REWRITE);
+            queryParser.setMultiTermRewriteMethod(MultiTermQuery.CONSTANT_SCORE_BLENDED_REWRITE);
             queryParser.setDefaultOperator(op.toQueryParserOperator());
             Query query = queryParser.parse("first foo-bar-foobar* last");
             Query expectedQuery = new BooleanQuery.Builder().add(
@@ -572,7 +572,7 @@ public class QueryStringQueryBuilderTests extends AbstractQueryTestCase<QueryStr
             BooleanClause.Occur defaultOp = op.toBooleanClauseOccur();
             QueryStringQueryParser queryParser = new QueryStringQueryParser(createSearchExecutionContext(), TEXT_FIELD_NAME);
             queryParser.setAnalyzeWildcard(true);
-            queryParser.setMultiTermRewriteMethod(MultiTermQuery.CONSTANT_SCORE_REWRITE);
+            queryParser.setMultiTermRewriteMethod(MultiTermQuery.CONSTANT_SCORE_BLENDED_REWRITE);
             queryParser.setDefaultOperator(op.toQueryParserOperator());
             queryParser.setForceAnalyzer(new MockRepeatAnalyzer());
             Query query = queryParser.parse("first foo-bar-foobar* last");
@@ -631,10 +631,10 @@ public class QueryStringQueryBuilderTests extends AbstractQueryTestCase<QueryStr
             BooleanClause.Occur defaultOp = op.toBooleanClauseOccur();
             QueryStringQueryParser queryParser = new QueryStringQueryParser(createSearchExecutionContext(), TEXT_FIELD_NAME);
             queryParser.setAnalyzeWildcard(true);
-            queryParser.setMultiTermRewriteMethod(MultiTermQuery.CONSTANT_SCORE_REWRITE);
+            queryParser.setMultiTermRewriteMethod(MultiTermQuery.CONSTANT_SCORE_BLENDED_REWRITE);
             queryParser.setDefaultOperator(op.toQueryParserOperator());
             queryParser.setAnalyzeWildcard(true);
-            queryParser.setMultiTermRewriteMethod(MultiTermQuery.CONSTANT_SCORE_REWRITE);
+            queryParser.setMultiTermRewriteMethod(MultiTermQuery.CONSTANT_SCORE_BLENDED_REWRITE);
             queryParser.setDefaultOperator(op.toQueryParserOperator());
             queryParser.setForceAnalyzer(new MockSynonymAnalyzer());
             queryParser.setAutoGenerateMultiTermSynonymsPhraseQuery(false);

+ 2 - 2
server/src/test/java/org/elasticsearch/search/aggregations/support/TimeSeriesIndexSearcherTests.java

@@ -11,13 +11,13 @@ package org.elasticsearch.search.aggregations.support;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.NumericDocValuesField;
 import org.apache.lucene.document.SortedDocValuesField;
+import org.apache.lucene.document.SortedSetDocValuesField;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.index.DocValues;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.index.NumericDocValues;
 import org.apache.lucene.index.SortedDocValues;
-import org.apache.lucene.sandbox.search.DocValuesTermsQuery;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.MatchAllDocsQuery;
 import org.apache.lucene.search.ScoreMode;
@@ -153,7 +153,7 @@ public class TimeSeriesIndexSearcherTests extends ESTestCase {
         BucketCollector collector = getBucketCollector(2 * DOC_COUNTS);
 
         // skip the first doc of segment 1 and 2
-        indexSearcher.search(new DocValuesTermsQuery("_tsid", List.of(new BytesRef("tsid0"), new BytesRef("tsid1"))), collector);
+        indexSearcher.search(SortedSetDocValuesField.newSlowSetQuery("_tsid", new BytesRef("tsid0"), new BytesRef("tsid1")), collector);
         collector.postCollection();
 
         reader.close();

+ 6 - 2
test/framework/src/main/java/org/elasticsearch/test/AbstractQueryTestCase.java

@@ -742,8 +742,12 @@ public abstract class AbstractQueryTestCase<QB extends AbstractQueryBuilder<QB>>
     protected static String getRandomRewriteMethod() {
         String rewrite;
         if (randomBoolean()) {
-            rewrite = randomFrom(QueryParsers.CONSTANT_SCORE, QueryParsers.SCORING_BOOLEAN, QueryParsers.CONSTANT_SCORE_BOOLEAN)
-                .getPreferredName();
+            rewrite = randomFrom(
+                QueryParsers.CONSTANT_SCORE,
+                QueryParsers.SCORING_BOOLEAN,
+                QueryParsers.CONSTANT_SCORE_BOOLEAN,
+                QueryParsers.CONSTANT_SCORE_BLENDED
+            ).getPreferredName();
         } else {
             rewrite = randomFrom(QueryParsers.TOP_TERMS, QueryParsers.TOP_TERMS_BOOST, QueryParsers.TOP_TERMS_BLENDED_FREQS)
                 .getPreferredName() + "1";