diff --git a/.github/workflows/assemble.yml b/.github/workflows/assemble.yml
index d90b05c323cf1..4146a74c47a1f 100644
--- a/.github/workflows/assemble.yml
+++ b/.github/workflows/assemble.yml
@@ -7,7 +7,7 @@ jobs:
     runs-on: ${{ matrix.os }}
     strategy:
       matrix:
-        java: [ 11, 17, 21 ]
+        java: [ 21, 23 ]
         os: [ubuntu-latest, windows-latest, macos-13]
     steps:
       - uses: actions/checkout@v4
@@ -16,17 +16,6 @@ jobs:
         with:
           java-version: ${{ matrix.java }}
           distribution: temurin
-      - name: Set up JDK 17
-        # See please https://docs.gradle.org/8.10/userguide/upgrading_version_8.html#minimum_daemon_jvm_version
-        if: matrix.java == 11
-        uses: actions/setup-java@v4
-        with:
-          java-version: 17
-          distribution: temurin
-      - name: Set JAVA${{ matrix.java }}_HOME
-        shell: bash
-        run: |
-          echo "JAVA${{ matrix.java }}_HOME=$JAVA_HOME_${{ matrix.java }}_${{ runner.arch }}" >> $GITHUB_ENV
       - name: Setup docker (missing on MacOS)
         id: setup_docker
         if: runner.os == 'macos'
@@ -47,8 +36,8 @@ jobs:
         shell: bash
         if: runner.os != 'macos'
         run: |
-          ./gradlew assemble --parallel --no-build-cache -PDISABLE_BUILD_CACHE -Druntime.java=${{ matrix.java }} 
+          ./gradlew assemble --parallel --no-build-cache -PDISABLE_BUILD_CACHE 
       - name: Run Gradle (assemble)
         if: runner.os == 'macos' && steps.setup_docker.outcome == 'success'
         run: |
-          ./gradlew assemble --parallel --no-build-cache -PDISABLE_BUILD_CACHE -Druntime.java=${{ matrix.java }}
+          ./gradlew assemble --parallel --no-build-cache -PDISABLE_BUILD_CACHE
diff --git a/.github/workflows/precommit.yml b/.github/workflows/precommit.yml
index 572f6c981a052..917634c5e94e9 100644
--- a/.github/workflows/precommit.yml
+++ b/.github/workflows/precommit.yml
@@ -7,7 +7,7 @@ jobs:
     runs-on: ${{ matrix.os }}
     strategy:
       matrix:
-        java: [ 11, 17, 21, 23 ]
+        java: [ 21, 23 ]
         os: [ubuntu-latest, windows-latest, macos-latest, macos-13]
     steps:
       - uses: actions/checkout@v4
@@ -17,18 +17,7 @@ jobs:
           java-version: ${{ matrix.java }}
           distribution: temurin
           cache: gradle
-      - name: Set up JDK 17
-        # See please https://docs.gradle.org/8.10/userguide/upgrading_version_8.html#minimum_daemon_jvm_version
-        if: matrix.java == 11
-        uses: actions/setup-java@v4
-        with:
-          java-version: 17
-          distribution: temurin
-      - name: Set JAVA${{ matrix.java }}_HOME
-        shell: bash
-        run: |
-          echo "JAVA${{ matrix.java }}_HOME=$JAVA_HOME_${{ matrix.java }}_${{ runner.arch }}" >> $GITHUB_ENV
       - name: Run Gradle (precommit)
         shell: bash
         run: |
-          ./gradlew javadoc precommit --parallel -Druntime.java=${{ matrix.java }}
+          ./gradlew javadoc precommit --parallel
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
index aaa1d8bdef85c..35c0ba897fd53 100644
--- a/buildSrc/build.gradle
+++ b/buildSrc/build.gradle
@@ -171,8 +171,8 @@ if (project != rootProject) {
 
   allprojects {
     java {
-        targetCompatibility = JavaVersion.VERSION_11
-        sourceCompatibility = JavaVersion.VERSION_11
+        targetCompatibility = JavaVersion.VERSION_21
+        sourceCompatibility = JavaVersion.VERSION_21
     }
   }
 
diff --git a/buildSrc/reaper/build.gradle b/buildSrc/reaper/build.gradle
index 58d06b02e9f4b..55efcf5d5dfff 100644
--- a/buildSrc/reaper/build.gradle
+++ b/buildSrc/reaper/build.gradle
@@ -12,8 +12,8 @@
 apply plugin: 'java'
 
 java {
-  targetCompatibility = JavaVersion.VERSION_11
-  sourceCompatibility = JavaVersion.VERSION_11
+  targetCompatibility = JavaVersion.VERSION_21
+  sourceCompatibility = JavaVersion.VERSION_21
 }
 
 jar {
diff --git a/buildSrc/src/testKit/thirdPartyAudit/build.gradle b/buildSrc/src/testKit/thirdPartyAudit/build.gradle
index 553ff5d8e6ed2..caaaa6bd1aceb 100644
--- a/buildSrc/src/testKit/thirdPartyAudit/build.gradle
+++ b/buildSrc/src/testKit/thirdPartyAudit/build.gradle
@@ -46,11 +46,11 @@ dependencies {
 }
 
 tasks.register("empty", ThirdPartyAuditTask) {
-  targetCompatibility = JavaVersion.VERSION_11
+  targetCompatibility = JavaVersion.VERSION_21
   signatureFile = file('third-party-audit-empty.txt')
 }
 
 tasks.register("absurd", ThirdPartyAuditTask) {
-  targetCompatibility = JavaVersion.VERSION_11
+  targetCompatibility = JavaVersion.VERSION_21
   signatureFile = file('third-party-audit-absurd.txt')
 }
diff --git a/buildSrc/version.properties b/buildSrc/version.properties
index 5740c124910b9..774183e12f3ac 100644
--- a/buildSrc/version.properties
+++ b/buildSrc/version.properties
@@ -1,5 +1,5 @@
 opensearch        = 3.0.0
-lucene            = 9.12.0
+lucene            = 10.0.0
 
 bundled_jdk_vendor = adoptium
 bundled_jdk = 23+37
diff --git a/libs/core/licenses/lucene-core-10.0.0.jar.sha1 b/libs/core/licenses/lucene-core-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..96cc85a5c56a2
--- /dev/null
+++ b/libs/core/licenses/lucene-core-10.0.0.jar.sha1
@@ -0,0 +1 @@
+5a9b3f728041df5b054aaaed3c3fd7ff0fed8ee7
\ No newline at end of file
diff --git a/libs/core/licenses/lucene-core-9.12.0.jar.sha1 b/libs/core/licenses/lucene-core-9.12.0.jar.sha1
deleted file mode 100644
index e55f896dedb63..0000000000000
--- a/libs/core/licenses/lucene-core-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-fdb055d569bb20bfce9618fe2b01c29bab7f290c
\ No newline at end of file
diff --git a/libs/core/src/main/java/org/opensearch/LegacyESVersion.java b/libs/core/src/main/java/org/opensearch/LegacyESVersion.java
index 5d8e067a8fd8b..6de19c89053ad 100644
--- a/libs/core/src/main/java/org/opensearch/LegacyESVersion.java
+++ b/libs/core/src/main/java/org/opensearch/LegacyESVersion.java
@@ -50,7 +50,7 @@ public class LegacyESVersion extends Version {
 
     public static final LegacyESVersion V_6_0_0 = new LegacyESVersion(6000099, org.apache.lucene.util.Version.fromBits(7, 0, 0));
     public static final LegacyESVersion V_6_5_0 = new LegacyESVersion(6050099, org.apache.lucene.util.Version.fromBits(7, 0, 0));
-    public static final LegacyESVersion V_7_2_0 = new LegacyESVersion(7020099, org.apache.lucene.util.Version.LUCENE_8_0_0);
+    public static final LegacyESVersion V_7_2_0 = new LegacyESVersion(7020099, org.apache.lucene.util.Version.fromBits(8, 0, 0));
 
     // todo move back to Version.java if retiring legacy version support
     protected static final Map<Integer, Version> idToVersion;
diff --git a/libs/core/src/main/java/org/opensearch/Version.java b/libs/core/src/main/java/org/opensearch/Version.java
index 6b1f6898eec9b..c5afcd35a8e74 100644
--- a/libs/core/src/main/java/org/opensearch/Version.java
+++ b/libs/core/src/main/java/org/opensearch/Version.java
@@ -112,7 +112,7 @@ public class Version implements Comparable<Version>, ToXContentFragment {
     public static final Version V_2_17_1 = new Version(2170199, org.apache.lucene.util.Version.LUCENE_9_11_1);
     public static final Version V_2_17_2 = new Version(2170299, org.apache.lucene.util.Version.LUCENE_9_11_1);
     public static final Version V_2_18_0 = new Version(2180099, org.apache.lucene.util.Version.LUCENE_9_12_0);
-    public static final Version V_3_0_0 = new Version(3000099, org.apache.lucene.util.Version.LUCENE_9_12_0);
+    public static final Version V_3_0_0 = new Version(3000099, org.apache.lucene.util.Version.LUCENE_10_0_0);
     public static final Version CURRENT = V_3_0_0;
 
     public static Version fromId(int id) {
diff --git a/modules/lang-expression/licenses/lucene-expressions-10.0.0.jar.sha1 b/modules/lang-expression/licenses/lucene-expressions-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..ee70628a05318
--- /dev/null
+++ b/modules/lang-expression/licenses/lucene-expressions-10.0.0.jar.sha1
@@ -0,0 +1 @@
+89b26348ec305598fc224cc9583939564b67b2cf
\ No newline at end of file
diff --git a/modules/lang-expression/licenses/lucene-expressions-9.12.0.jar.sha1 b/modules/lang-expression/licenses/lucene-expressions-9.12.0.jar.sha1
deleted file mode 100644
index 476049a66cc08..0000000000000
--- a/modules/lang-expression/licenses/lucene-expressions-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-5ba843374a0aab3dfe0b11cb28b251844d85bf5b
\ No newline at end of file
diff --git a/plugins/analysis-icu/licenses/lucene-analysis-icu-10.0.0.jar.sha1 b/plugins/analysis-icu/licenses/lucene-analysis-icu-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..058ece7137757
--- /dev/null
+++ b/plugins/analysis-icu/licenses/lucene-analysis-icu-10.0.0.jar.sha1
@@ -0,0 +1 @@
+082c38c1335c069a73622c37ca3d39e64c1b2d33
\ No newline at end of file
diff --git a/plugins/analysis-icu/licenses/lucene-analysis-icu-9.12.0.jar.sha1 b/plugins/analysis-icu/licenses/lucene-analysis-icu-9.12.0.jar.sha1
deleted file mode 100644
index 31398b27708a3..0000000000000
--- a/plugins/analysis-icu/licenses/lucene-analysis-icu-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-a9232b6a4882979118d3281b98dfdb6e0e1cb5ca
\ No newline at end of file
diff --git a/plugins/analysis-kuromoji/licenses/lucene-analysis-kuromoji-10.0.0.jar.sha1 b/plugins/analysis-kuromoji/licenses/lucene-analysis-kuromoji-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..7948076b1413a
--- /dev/null
+++ b/plugins/analysis-kuromoji/licenses/lucene-analysis-kuromoji-10.0.0.jar.sha1
@@ -0,0 +1 @@
+26071742008630779523d08c0b46b2f371ef23a0
\ No newline at end of file
diff --git a/plugins/analysis-kuromoji/licenses/lucene-analysis-kuromoji-9.12.0.jar.sha1 b/plugins/analysis-kuromoji/licenses/lucene-analysis-kuromoji-9.12.0.jar.sha1
deleted file mode 100644
index fa4c9d2d09d6e..0000000000000
--- a/plugins/analysis-kuromoji/licenses/lucene-analysis-kuromoji-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-a3a6950ffc22e76a082e1b3cefb022b9f7870d29
\ No newline at end of file
diff --git a/plugins/analysis-nori/licenses/lucene-analysis-nori-10.0.0.jar.sha1 b/plugins/analysis-nori/licenses/lucene-analysis-nori-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..ed21c354a6ea1
--- /dev/null
+++ b/plugins/analysis-nori/licenses/lucene-analysis-nori-10.0.0.jar.sha1
@@ -0,0 +1 @@
+4a6ff02a1bd34a3c0165da05f714bb8188074bdc
\ No newline at end of file
diff --git a/plugins/analysis-nori/licenses/lucene-analysis-nori-9.12.0.jar.sha1 b/plugins/analysis-nori/licenses/lucene-analysis-nori-9.12.0.jar.sha1
deleted file mode 100644
index 576b924286d2d..0000000000000
--- a/plugins/analysis-nori/licenses/lucene-analysis-nori-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-e71f85b72ed3939039ba8897b28b065dd11918b9
\ No newline at end of file
diff --git a/plugins/analysis-phonetic/licenses/lucene-analysis-phonetic-10.0.0.jar.sha1 b/plugins/analysis-phonetic/licenses/lucene-analysis-phonetic-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..3c82cd3de2aca
--- /dev/null
+++ b/plugins/analysis-phonetic/licenses/lucene-analysis-phonetic-10.0.0.jar.sha1
@@ -0,0 +1 @@
+4c488697df5038a78e5e65bb9b6da120af62d824
\ No newline at end of file
diff --git a/plugins/analysis-phonetic/licenses/lucene-analysis-phonetic-9.12.0.jar.sha1 b/plugins/analysis-phonetic/licenses/lucene-analysis-phonetic-9.12.0.jar.sha1
deleted file mode 100644
index c8c146bbd0d25..0000000000000
--- a/plugins/analysis-phonetic/licenses/lucene-analysis-phonetic-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-6baa3ae7ab20d6e644cf0bedb271c50a44c0e259
\ No newline at end of file
diff --git a/plugins/analysis-smartcn/licenses/lucene-analysis-smartcn-10.0.0.jar.sha1 b/plugins/analysis-smartcn/licenses/lucene-analysis-smartcn-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..a1682a17383d5
--- /dev/null
+++ b/plugins/analysis-smartcn/licenses/lucene-analysis-smartcn-10.0.0.jar.sha1
@@ -0,0 +1 @@
+1137b9846ec000b49c70c3fe5f8cd79b7129be22
\ No newline at end of file
diff --git a/plugins/analysis-smartcn/licenses/lucene-analysis-smartcn-9.12.0.jar.sha1 b/plugins/analysis-smartcn/licenses/lucene-analysis-smartcn-9.12.0.jar.sha1
deleted file mode 100644
index 54ea0b19f2a7b..0000000000000
--- a/plugins/analysis-smartcn/licenses/lucene-analysis-smartcn-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-f183e1e8b1eaaa4dec444774a285bb8b66518522
\ No newline at end of file
diff --git a/plugins/analysis-stempel/licenses/lucene-analysis-stempel-10.0.0.jar.sha1 b/plugins/analysis-stempel/licenses/lucene-analysis-stempel-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..f9abb518f0000
--- /dev/null
+++ b/plugins/analysis-stempel/licenses/lucene-analysis-stempel-10.0.0.jar.sha1
@@ -0,0 +1 @@
+3fd86db5e9748063369db4bed84f1bd2ca62d387
\ No newline at end of file
diff --git a/plugins/analysis-stempel/licenses/lucene-analysis-stempel-9.12.0.jar.sha1 b/plugins/analysis-stempel/licenses/lucene-analysis-stempel-9.12.0.jar.sha1
deleted file mode 100644
index 5442a40f5bba2..0000000000000
--- a/plugins/analysis-stempel/licenses/lucene-analysis-stempel-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-b81a609934e65d12ab9d2d84bc2ea6f56a360e57
\ No newline at end of file
diff --git a/plugins/analysis-ukrainian/licenses/lucene-analysis-morfologik-10.0.0.jar.sha1 b/plugins/analysis-ukrainian/licenses/lucene-analysis-morfologik-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..f8a7e894dc05f
--- /dev/null
+++ b/plugins/analysis-ukrainian/licenses/lucene-analysis-morfologik-10.0.0.jar.sha1
@@ -0,0 +1 @@
+4e6b940b3b934d6de174fedaaeaefd647698648d
\ No newline at end of file
diff --git a/plugins/analysis-ukrainian/licenses/lucene-analysis-morfologik-9.12.0.jar.sha1 b/plugins/analysis-ukrainian/licenses/lucene-analysis-morfologik-9.12.0.jar.sha1
deleted file mode 100644
index 60fd4015cfde0..0000000000000
--- a/plugins/analysis-ukrainian/licenses/lucene-analysis-morfologik-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-bec069f286b45f20b743c81e84202369cd0467e7
\ No newline at end of file
diff --git a/server/licenses/lucene-analysis-common-10.0.0.jar.sha1 b/server/licenses/lucene-analysis-common-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..fd1abb6a867bc
--- /dev/null
+++ b/server/licenses/lucene-analysis-common-10.0.0.jar.sha1
@@ -0,0 +1 @@
+13eb016bab14973158554a2e6cdf2abbc5c3eda1
\ No newline at end of file
diff --git a/server/licenses/lucene-analysis-common-9.12.0.jar.sha1 b/server/licenses/lucene-analysis-common-9.12.0.jar.sha1
deleted file mode 100644
index fd952034f3742..0000000000000
--- a/server/licenses/lucene-analysis-common-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-4c2503cfaba37249e20ea877555cb52ee89d1ae1
\ No newline at end of file
diff --git a/server/licenses/lucene-backward-codecs-10.0.0.jar.sha1 b/server/licenses/lucene-backward-codecs-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..640543c4c5ec0
--- /dev/null
+++ b/server/licenses/lucene-backward-codecs-10.0.0.jar.sha1
@@ -0,0 +1 @@
+8e21f708eb1bbb71ce79cbfea093b6ca913f4abf
\ No newline at end of file
diff --git a/server/licenses/lucene-backward-codecs-9.12.0.jar.sha1 b/server/licenses/lucene-backward-codecs-9.12.0.jar.sha1
deleted file mode 100644
index 2993134edd610..0000000000000
--- a/server/licenses/lucene-backward-codecs-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-68fe98c94e9644a584ea1bf525e68d9406fc61ec
\ No newline at end of file
diff --git a/server/licenses/lucene-core-10.0.0.jar.sha1 b/server/licenses/lucene-core-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..96cc85a5c56a2
--- /dev/null
+++ b/server/licenses/lucene-core-10.0.0.jar.sha1
@@ -0,0 +1 @@
+5a9b3f728041df5b054aaaed3c3fd7ff0fed8ee7
\ No newline at end of file
diff --git a/server/licenses/lucene-core-9.12.0.jar.sha1 b/server/licenses/lucene-core-9.12.0.jar.sha1
deleted file mode 100644
index e55f896dedb63..0000000000000
--- a/server/licenses/lucene-core-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-fdb055d569bb20bfce9618fe2b01c29bab7f290c
\ No newline at end of file
diff --git a/server/licenses/lucene-grouping-10.0.0.jar.sha1 b/server/licenses/lucene-grouping-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..178d7c5896031
--- /dev/null
+++ b/server/licenses/lucene-grouping-10.0.0.jar.sha1
@@ -0,0 +1 @@
+17145d786d31e7ecd68d149ccc3e7ab83270f282
\ No newline at end of file
diff --git a/server/licenses/lucene-grouping-9.12.0.jar.sha1 b/server/licenses/lucene-grouping-9.12.0.jar.sha1
deleted file mode 100644
index 48388974bb38f..0000000000000
--- a/server/licenses/lucene-grouping-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-ccf99f8db57aa97b2c1f95c5cc2a11156a043921
\ No newline at end of file
diff --git a/server/licenses/lucene-highlighter-10.0.0.jar.sha1 b/server/licenses/lucene-highlighter-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..808bd4177fa7c
--- /dev/null
+++ b/server/licenses/lucene-highlighter-10.0.0.jar.sha1
@@ -0,0 +1 @@
+b8324f1b859620912c186b27d9666215ce3d258b
\ No newline at end of file
diff --git a/server/licenses/lucene-highlighter-9.12.0.jar.sha1 b/server/licenses/lucene-highlighter-9.12.0.jar.sha1
deleted file mode 100644
index 3d457579da892..0000000000000
--- a/server/licenses/lucene-highlighter-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-e93429f66fbcd3b58d81f01223d6ce5688047296
\ No newline at end of file
diff --git a/server/licenses/lucene-join-10.0.0.jar.sha1 b/server/licenses/lucene-join-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..cb3fcc7dacb41
--- /dev/null
+++ b/server/licenses/lucene-join-10.0.0.jar.sha1
@@ -0,0 +1 @@
+3a4c5bf84c855b011e740f30cb8a23f2ee85e1c1
\ No newline at end of file
diff --git a/server/licenses/lucene-join-9.12.0.jar.sha1 b/server/licenses/lucene-join-9.12.0.jar.sha1
deleted file mode 100644
index c5f6d16598a60..0000000000000
--- a/server/licenses/lucene-join-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-14c802d6955eaf11107375a2ada8fe8ec53b3e01
\ No newline at end of file
diff --git a/server/licenses/lucene-memory-10.0.0.jar.sha1 b/server/licenses/lucene-memory-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..0b2cdc53ccd97
--- /dev/null
+++ b/server/licenses/lucene-memory-10.0.0.jar.sha1
@@ -0,0 +1 @@
+bc0f37a0a06b445555d07e5fe199d73436d51352
\ No newline at end of file
diff --git a/server/licenses/lucene-memory-9.12.0.jar.sha1 b/server/licenses/lucene-memory-9.12.0.jar.sha1
deleted file mode 100644
index e7ac44089c006..0000000000000
--- a/server/licenses/lucene-memory-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-ffe090339540876b40df792aee51a42af6b3f37f
\ No newline at end of file
diff --git a/server/licenses/lucene-misc-10.0.0.jar.sha1 b/server/licenses/lucene-misc-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..10d6a7e729e99
--- /dev/null
+++ b/server/licenses/lucene-misc-10.0.0.jar.sha1
@@ -0,0 +1 @@
+5f619b32c62bb9405e7af595cf7311113ed62e33
\ No newline at end of file
diff --git a/server/licenses/lucene-misc-9.12.0.jar.sha1 b/server/licenses/lucene-misc-9.12.0.jar.sha1
deleted file mode 100644
index afb546be4e032..0000000000000
--- a/server/licenses/lucene-misc-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-ad17704ee90eb926b6d3105f7027485cdadbecd9
\ No newline at end of file
diff --git a/server/licenses/lucene-queries-10.0.0.jar.sha1 b/server/licenses/lucene-queries-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..dbc47789c752b
--- /dev/null
+++ b/server/licenses/lucene-queries-10.0.0.jar.sha1
@@ -0,0 +1 @@
+3d2f98787e27e8e2a65d994c86563edf16dd92f1
\ No newline at end of file
diff --git a/server/licenses/lucene-queries-9.12.0.jar.sha1 b/server/licenses/lucene-queries-9.12.0.jar.sha1
deleted file mode 100644
index e24756e38dad2..0000000000000
--- a/server/licenses/lucene-queries-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-3ac2a62b0b55c5725bb65f0c5454f9f8a401cf43
\ No newline at end of file
diff --git a/server/licenses/lucene-queryparser-10.0.0.jar.sha1 b/server/licenses/lucene-queryparser-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..3d91eddfd0cb7
--- /dev/null
+++ b/server/licenses/lucene-queryparser-10.0.0.jar.sha1
@@ -0,0 +1 @@
+e11886c913058ef20378715dee715d942d04babc
\ No newline at end of file
diff --git a/server/licenses/lucene-queryparser-9.12.0.jar.sha1 b/server/licenses/lucene-queryparser-9.12.0.jar.sha1
deleted file mode 100644
index e93e00a063dd0..0000000000000
--- a/server/licenses/lucene-queryparser-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-55959399373876f4c184944315458dc6b88fbd81
\ No newline at end of file
diff --git a/server/licenses/lucene-sandbox-10.0.0.jar.sha1 b/server/licenses/lucene-sandbox-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..017398715a38f
--- /dev/null
+++ b/server/licenses/lucene-sandbox-10.0.0.jar.sha1
@@ -0,0 +1 @@
+1795ce5b066bda61483c375f6b8e358aaa4f6348
\ No newline at end of file
diff --git a/server/licenses/lucene-sandbox-9.12.0.jar.sha1 b/server/licenses/lucene-sandbox-9.12.0.jar.sha1
deleted file mode 100644
index a3fd8446e0dbc..0000000000000
--- a/server/licenses/lucene-sandbox-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-f65882536d681c11a1cbc920e5679201101e3603
\ No newline at end of file
diff --git a/server/licenses/lucene-spatial-extras-10.0.0.jar.sha1 b/server/licenses/lucene-spatial-extras-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..320c07f51fbaa
--- /dev/null
+++ b/server/licenses/lucene-spatial-extras-10.0.0.jar.sha1
@@ -0,0 +1 @@
+a701eb363cf0a75ebacd1844398314250abcf592
\ No newline at end of file
diff --git a/server/licenses/lucene-spatial-extras-9.12.0.jar.sha1 b/server/licenses/lucene-spatial-extras-9.12.0.jar.sha1
deleted file mode 100644
index b0f11fb667faf..0000000000000
--- a/server/licenses/lucene-spatial-extras-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-9d00cc7cc2279822ef6740f0677cafacfb439fa8
\ No newline at end of file
diff --git a/server/licenses/lucene-spatial3d-10.0.0.jar.sha1 b/server/licenses/lucene-spatial3d-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..059721a317028
--- /dev/null
+++ b/server/licenses/lucene-spatial3d-10.0.0.jar.sha1
@@ -0,0 +1 @@
+d9e0a8a6084d7657a633c1aa94d750414f5288c4
\ No newline at end of file
diff --git a/server/licenses/lucene-spatial3d-9.12.0.jar.sha1 b/server/licenses/lucene-spatial3d-9.12.0.jar.sha1
deleted file mode 100644
index 858eee25ac191..0000000000000
--- a/server/licenses/lucene-spatial3d-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-e3092632ca1d4427d3ebb2c866ac89d90f5b61ec
\ No newline at end of file
diff --git a/server/licenses/lucene-suggest-10.0.0.jar.sha1 b/server/licenses/lucene-suggest-10.0.0.jar.sha1
new file mode 100644
index 0000000000000..72db888179d00
--- /dev/null
+++ b/server/licenses/lucene-suggest-10.0.0.jar.sha1
@@ -0,0 +1 @@
+d79099abc148a1906e129abbabd5e1b18a20c117
\ No newline at end of file
diff --git a/server/licenses/lucene-suggest-9.12.0.jar.sha1 b/server/licenses/lucene-suggest-9.12.0.jar.sha1
deleted file mode 100644
index 973a7726d845d..0000000000000
--- a/server/licenses/lucene-suggest-9.12.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-e1c6636499317ebe498f3490a1ec8b86b8a363dd
\ No newline at end of file
diff --git a/server/src/main/java/org/apache/lucene/search/grouping/CollapseTopFieldDocs.java b/server/src/main/java/org/apache/lucene/search/grouping/CollapseTopFieldDocs.java
index 961587113173d..4ab1eee4e089f 100644
--- a/server/src/main/java/org/apache/lucene/search/grouping/CollapseTopFieldDocs.java
+++ b/server/src/main/java/org/apache/lucene/search/grouping/CollapseTopFieldDocs.java
@@ -192,10 +192,10 @@ public static CollapseTopFieldDocs merge(Sort sort, int start, int size, Collaps
             final CollapseTopFieldDocs shard = shardHits[shardIDX];
             // totalHits can be non-zero even if no hits were
             // collected, when searchAfter was used:
-            totalHitCount += shard.totalHits.value;
+            totalHitCount += shard.totalHits.value();
             // If any hit count is a lower bound then the merged
             // total hit count is a lower bound as well
-            if (shard.totalHits.relation == TotalHits.Relation.GREATER_THAN_OR_EQUAL_TO) {
+            if (shard.totalHits.relation() == TotalHits.Relation.GREATER_THAN_OR_EQUAL_TO) {
                 totalHitsRelation = TotalHits.Relation.GREATER_THAN_OR_EQUAL_TO;
             }
             if (CollectionUtils.isEmpty(shard.scoreDocs) == false) {
diff --git a/server/src/main/java/org/apache/lucene/search/grouping/CollapsingDocValuesSource.java b/server/src/main/java/org/apache/lucene/search/grouping/CollapsingDocValuesSource.java
index d747bb47a30ad..661ab1374bd28 100644
--- a/server/src/main/java/org/apache/lucene/search/grouping/CollapsingDocValuesSource.java
+++ b/server/src/main/java/org/apache/lucene/search/grouping/CollapsingDocValuesSource.java
@@ -229,7 +229,7 @@ public void setNextReader(LeafReaderContext readerContext) throws IOException {
                             public boolean advanceExact(int target) throws IOException {
                                 if (sorted.advanceExact(target)) {
                                     ord = (int) sorted.nextOrd();
-                                    if (sorted.nextOrd() != SortedSetDocValues.NO_MORE_ORDS) {
+                                    if (sorted.nextOrd() != SortedSetDocValues.NO_MORE_DOCS) {
                                         throw new IllegalStateException(
                                             "failed to collapse " + target + ", the collapse field must be single valued"
                                         );
diff --git a/server/src/main/java/org/apache/lucene/util/packed/XPackedInts.java b/server/src/main/java/org/apache/lucene/util/packed/XPackedInts.java
index 4260d34ead7c9..4d45485ce2f7c 100644
--- a/server/src/main/java/org/apache/lucene/util/packed/XPackedInts.java
+++ b/server/src/main/java/org/apache/lucene/util/packed/XPackedInts.java
@@ -534,7 +534,7 @@ public static Reader getDirectReader(IndexInput in) throws IOException {
      */
     public static Mutable getMutable(int valueCount, int bitsPerValue, float acceptableOverheadRatio) {
         final FormatAndBits formatAndBits = fastestFormatAndBits(valueCount, bitsPerValue, acceptableOverheadRatio);
-        return getMutable(valueCount, formatAndBits.bitsPerValue, formatAndBits.format);
+        return getMutable(valueCount, formatAndBits.bitsPerValue(), formatAndBits.format());
     }
 
     /**
@@ -629,7 +629,13 @@ public static Writer getWriter(DataOutput out, int valueCount, int bitsPerValue,
         assert valueCount >= 0;
 
         final FormatAndBits formatAndBits = fastestFormatAndBits(valueCount, bitsPerValue, acceptableOverheadRatio);
-        final XWriter writer = getWriterNoHeader(out, formatAndBits.format, valueCount, formatAndBits.bitsPerValue, DEFAULT_BUFFER_SIZE);
+        final XWriter writer = getWriterNoHeader(
+            out,
+            formatAndBits.format(),
+            valueCount,
+            formatAndBits.bitsPerValue(),
+            DEFAULT_BUFFER_SIZE
+        );
         writer.writeHeader();
         return writer;
     }
diff --git a/server/src/main/java/org/opensearch/action/search/BottomSortValuesCollector.java b/server/src/main/java/org/opensearch/action/search/BottomSortValuesCollector.java
index bce8d9fb2b1ca..73d821ff472a2 100644
--- a/server/src/main/java/org/opensearch/action/search/BottomSortValuesCollector.java
+++ b/server/src/main/java/org/opensearch/action/search/BottomSortValuesCollector.java
@@ -77,7 +77,7 @@ SearchSortValuesAndFormats getBottomSortValues() {
     }
 
     synchronized void consumeTopDocs(TopFieldDocs topDocs, DocValueFormat[] sortValuesFormat) {
-        totalHits += topDocs.totalHits.value;
+        totalHits += topDocs.totalHits.value();
         if (validateShardSortFields(topDocs.fields) == false) {
             return;
         }
diff --git a/server/src/main/java/org/opensearch/action/search/SearchPhaseController.java b/server/src/main/java/org/opensearch/action/search/SearchPhaseController.java
index 161a103cdf36a..452bacfc6fd1f 100644
--- a/server/src/main/java/org/opensearch/action/search/SearchPhaseController.java
+++ b/server/src/main/java/org/opensearch/action/search/SearchPhaseController.java
@@ -802,8 +802,8 @@ TotalHits getTotalHits() {
 
         void add(TopDocsAndMaxScore topDocs, boolean timedOut, Boolean terminatedEarly) {
             if (trackTotalHitsUpTo != SearchContext.TRACK_TOTAL_HITS_DISABLED) {
-                totalHits += topDocs.topDocs.totalHits.value;
-                if (topDocs.topDocs.totalHits.relation == Relation.GREATER_THAN_OR_EQUAL_TO) {
+                totalHits += topDocs.topDocs.totalHits.value();
+                if (topDocs.topDocs.totalHits.relation() == Relation.GREATER_THAN_OR_EQUAL_TO) {
                     totalHitsRelation = TotalHits.Relation.GREATER_THAN_OR_EQUAL_TO;
                 }
             }
diff --git a/server/src/main/java/org/opensearch/bootstrap/BootstrapChecks.java b/server/src/main/java/org/opensearch/bootstrap/BootstrapChecks.java
index 485dd43a5999c..0e0b4e9be261a 100644
--- a/server/src/main/java/org/opensearch/bootstrap/BootstrapChecks.java
+++ b/server/src/main/java/org/opensearch/bootstrap/BootstrapChecks.java
@@ -703,7 +703,7 @@ String jvmVendor() {
         }
 
         String javaVersion() {
-            return Constants.JAVA_VERSION;
+            return Runtime.version().toString();
         }
 
     }
diff --git a/server/src/main/java/org/opensearch/common/lucene/Lucene.java b/server/src/main/java/org/opensearch/common/lucene/Lucene.java
index 361ee859e3e6a..a999cf321eba6 100644
--- a/server/src/main/java/org/opensearch/common/lucene/Lucene.java
+++ b/server/src/main/java/org/opensearch/common/lucene/Lucene.java
@@ -423,8 +423,8 @@ public static ScoreDoc readScoreDoc(StreamInput in) throws IOException {
     private static final Class<?> GEO_DISTANCE_SORT_TYPE_CLASS = LatLonDocValuesField.newDistanceSort("some_geo_field", 0, 0).getClass();
 
     public static void writeTotalHits(StreamOutput out, TotalHits totalHits) throws IOException {
-        out.writeVLong(totalHits.value);
-        out.writeEnum(totalHits.relation);
+        out.writeVLong(totalHits.value());
+        out.writeEnum(totalHits.relation());
     }
 
     public static void writeTopDocs(StreamOutput out, TopDocsAndMaxScore topDocs) throws IOException {
diff --git a/server/src/main/java/org/opensearch/common/lucene/index/FilterableTermsEnum.java b/server/src/main/java/org/opensearch/common/lucene/index/FilterableTermsEnum.java
index 224c5b600c930..4e1ce331571b6 100644
--- a/server/src/main/java/org/opensearch/common/lucene/index/FilterableTermsEnum.java
+++ b/server/src/main/java/org/opensearch/common/lucene/index/FilterableTermsEnum.java
@@ -50,6 +50,7 @@
 import org.apache.lucene.util.BitSet;
 import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.IOBooleanSupplier;
 import org.opensearch.common.Nullable;
 
 import java.io.IOException;
@@ -256,4 +257,9 @@ public ImpactsEnum impacts(int flags) throws IOException {
     public BytesRef next() throws IOException {
         throw new UnsupportedOperationException(UNSUPPORTED_MESSAGE);
     }
+
+    @Override
+    public IOBooleanSupplier prepareSeekExact(BytesRef text) throws IOException {
+        throw new UnsupportedOperationException(UNSUPPORTED_MESSAGE);
+    }
 }
diff --git a/server/src/main/java/org/opensearch/common/lucene/search/Queries.java b/server/src/main/java/org/opensearch/common/lucene/search/Queries.java
index 125eab9512be8..6a4a68bb7b6f5 100644
--- a/server/src/main/java/org/opensearch/common/lucene/search/Queries.java
+++ b/server/src/main/java/org/opensearch/common/lucene/search/Queries.java
@@ -137,7 +137,7 @@ public static Query applyMinimumShouldMatch(BooleanQuery query, @Nullable String
         }
         int optionalClauses = 0;
         for (BooleanClause c : query.clauses()) {
-            if (c.getOccur() == BooleanClause.Occur.SHOULD) {
+            if (c.occur() == BooleanClause.Occur.SHOULD) {
                 optionalClauses++;
             }
         }
diff --git a/server/src/main/java/org/opensearch/index/codec/CodecService.java b/server/src/main/java/org/opensearch/index/codec/CodecService.java
index 3a93795ef61ec..fe672444c46a9 100644
--- a/server/src/main/java/org/opensearch/index/codec/CodecService.java
+++ b/server/src/main/java/org/opensearch/index/codec/CodecService.java
@@ -34,8 +34,8 @@
 
 import org.apache.logging.log4j.Logger;
 import org.apache.lucene.codecs.Codec;
-import org.apache.lucene.codecs.lucene912.Lucene912Codec;
-import org.apache.lucene.codecs.lucene912.Lucene912Codec.Mode;
+import org.apache.lucene.codecs.lucene100.Lucene100Codec;
+import org.apache.lucene.codecs.lucene100.Lucene100Codec.Mode;
 import org.opensearch.common.Nullable;
 import org.opensearch.common.collect.MapBuilder;
 import org.opensearch.index.IndexSettings;
@@ -70,10 +70,10 @@ public CodecService(@Nullable MapperService mapperService, IndexSettings indexSe
         final MapBuilder<String, Codec> codecs = MapBuilder.<String, Codec>newMapBuilder();
         assert null != indexSettings;
         if (mapperService == null) {
-            codecs.put(DEFAULT_CODEC, new Lucene912Codec());
-            codecs.put(LZ4, new Lucene912Codec());
-            codecs.put(BEST_COMPRESSION_CODEC, new Lucene912Codec(Mode.BEST_COMPRESSION));
-            codecs.put(ZLIB, new Lucene912Codec(Mode.BEST_COMPRESSION));
+            codecs.put(DEFAULT_CODEC, new Lucene100Codec());
+            codecs.put(LZ4, new Lucene100Codec());
+            codecs.put(BEST_COMPRESSION_CODEC, new Lucene100Codec(Mode.BEST_COMPRESSION));
+            codecs.put(ZLIB, new Lucene100Codec(Mode.BEST_COMPRESSION));
         } else {
             // CompositeCodec still delegates to PerFieldMappingPostingFormatCodec
             // We can still support all the compression codecs when composite index is present
diff --git a/server/src/main/java/org/opensearch/index/codec/PerFieldMappingPostingFormatCodec.java b/server/src/main/java/org/opensearch/index/codec/PerFieldMappingPostingFormatCodec.java
index 0ed8c3880f2ea..e795d80279d2c 100644
--- a/server/src/main/java/org/opensearch/index/codec/PerFieldMappingPostingFormatCodec.java
+++ b/server/src/main/java/org/opensearch/index/codec/PerFieldMappingPostingFormatCodec.java
@@ -36,8 +36,8 @@
 import org.apache.lucene.codecs.Codec;
 import org.apache.lucene.codecs.DocValuesFormat;
 import org.apache.lucene.codecs.PostingsFormat;
+import org.apache.lucene.codecs.lucene100.Lucene100Codec;
 import org.apache.lucene.codecs.lucene90.Lucene90DocValuesFormat;
-import org.apache.lucene.codecs.lucene912.Lucene912Codec;
 import org.opensearch.common.lucene.Lucene;
 import org.opensearch.index.codec.fuzzy.FuzzyFilterPostingsFormat;
 import org.opensearch.index.codec.fuzzy.FuzzySetFactory;
@@ -59,7 +59,7 @@
  *
  * @opensearch.internal
  */
-public class PerFieldMappingPostingFormatCodec extends Lucene912Codec {
+public class PerFieldMappingPostingFormatCodec extends Lucene100Codec {
     private final Logger logger;
     private final MapperService mapperService;
     private final DocValuesFormat dvFormat = new Lucene90DocValuesFormat();
diff --git a/server/src/main/java/org/opensearch/index/codec/composite/CompositeCodecFactory.java b/server/src/main/java/org/opensearch/index/codec/composite/CompositeCodecFactory.java
index 674773bb86354..5c3a8aa23595f 100644
--- a/server/src/main/java/org/opensearch/index/codec/composite/CompositeCodecFactory.java
+++ b/server/src/main/java/org/opensearch/index/codec/composite/CompositeCodecFactory.java
@@ -10,8 +10,9 @@
 
 import org.apache.logging.log4j.Logger;
 import org.apache.lucene.codecs.Codec;
-import org.apache.lucene.codecs.lucene912.Lucene912Codec;
+import org.apache.lucene.codecs.lucene100.Lucene100Codec;
 import org.opensearch.common.annotation.ExperimentalApi;
+import org.opensearch.index.codec.composite.composite100.Composite100Codec;
 import org.opensearch.index.codec.composite.composite912.Composite912Codec;
 import org.opensearch.index.mapper.MapperService;
 
@@ -38,10 +39,10 @@ public CompositeCodecFactory() {}
 
     public Map<String, Codec> getCompositeIndexCodecs(MapperService mapperService, Logger logger) {
         Map<String, Codec> codecs = new HashMap<>();
-        codecs.put(DEFAULT_CODEC, new Composite912Codec(Lucene912Codec.Mode.BEST_SPEED, mapperService, logger));
-        codecs.put(LZ4, new Composite912Codec(Lucene912Codec.Mode.BEST_SPEED, mapperService, logger));
-        codecs.put(BEST_COMPRESSION_CODEC, new Composite912Codec(Lucene912Codec.Mode.BEST_COMPRESSION, mapperService, logger));
-        codecs.put(ZLIB, new Composite912Codec(Lucene912Codec.Mode.BEST_COMPRESSION, mapperService, logger));
+        codecs.put(DEFAULT_CODEC, new Composite100Codec(Lucene100Codec.Mode.BEST_SPEED, mapperService, logger));
+        codecs.put(LZ4, new Composite100Codec(Lucene100Codec.Mode.BEST_SPEED, mapperService, logger));
+        codecs.put(BEST_COMPRESSION_CODEC, new Composite100Codec(Lucene100Codec.Mode.BEST_COMPRESSION, mapperService, logger));
+        codecs.put(ZLIB, new Composite100Codec(Lucene100Codec.Mode.BEST_COMPRESSION, mapperService, logger));
         return codecs;
     }
 }
diff --git a/server/src/main/java/org/opensearch/index/codec/composite/composite100/Composite100Codec.java b/server/src/main/java/org/opensearch/index/codec/composite/composite100/Composite100Codec.java
new file mode 100644
index 0000000000000..5e90a69ab3474
--- /dev/null
+++ b/server/src/main/java/org/opensearch/index/codec/composite/composite100/Composite100Codec.java
@@ -0,0 +1,58 @@
+/*
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * The OpenSearch Contributors require contributions made to
+ * this file be licensed under the Apache-2.0 license or a
+ * compatible open source license.
+ */
+
+package org.opensearch.index.codec.composite.composite100;
+
+import org.apache.logging.log4j.Logger;
+import org.apache.lucene.codecs.Codec;
+import org.apache.lucene.codecs.DocValuesFormat;
+import org.apache.lucene.codecs.FilterCodec;
+import org.apache.lucene.codecs.lucene100.Lucene100Codec;
+import org.opensearch.common.annotation.ExperimentalApi;
+import org.opensearch.index.codec.PerFieldMappingPostingFormatCodec;
+import org.opensearch.index.codec.composite.composite912.Composite912DocValuesFormat;
+import org.opensearch.index.mapper.MapperService;
+
+/**
+ *  Extends the Codec to support new file formats for composite indices eg: star tree index
+ *  based on the mappings.
+ *
+ * @opensearch.experimental
+ */
+@ExperimentalApi
+public class Composite100Codec extends FilterCodec {
+    public static final String COMPOSITE_INDEX_CODEC_NAME = "Composite100Codec";
+    private final MapperService mapperService;
+
+    // needed for SPI - this is used in reader path
+    public Composite100Codec() {
+        this(COMPOSITE_INDEX_CODEC_NAME, new Lucene100Codec(), null);
+    }
+
+    public Composite100Codec(Lucene100Codec.Mode compressionMode, MapperService mapperService, Logger logger) {
+        this(COMPOSITE_INDEX_CODEC_NAME, new PerFieldMappingPostingFormatCodec(compressionMode, mapperService, logger), mapperService);
+    }
+
+    /**
+     * Sole constructor. When subclassing this codec, create a no-arg ctor and pass the delegate codec and a unique name to
+     * this ctor.
+     *
+     * @param name name of the codec
+     * @param delegate codec delegate
+     * @param mapperService mapper service instance
+     */
+    protected Composite100Codec(String name, Codec delegate, MapperService mapperService) {
+        super(name, delegate);
+        this.mapperService = mapperService;
+    }
+
+    @Override
+    public DocValuesFormat docValuesFormat() {
+        return new Composite912DocValuesFormat(mapperService);
+    }
+}
diff --git a/server/src/main/java/org/opensearch/index/codec/composite/composite100/package-info.java b/server/src/main/java/org/opensearch/index/codec/composite/composite100/package-info.java
new file mode 100644
index 0000000000000..b767ddbe8901f
--- /dev/null
+++ b/server/src/main/java/org/opensearch/index/codec/composite/composite100/package-info.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * The OpenSearch Contributors require contributions made to
+ * this file be licensed under the Apache-2.0 license or a
+ * compatible open source license.
+ */
+
+/**
+ *  Responsible for handling all composite index codecs and operations associated with Composite100 codec
+ */
+package org.opensearch.index.codec.composite.composite100;
diff --git a/server/src/main/java/org/opensearch/index/codec/composite/composite912/Composite912Codec.java b/server/src/main/java/org/opensearch/index/codec/composite/composite912/Composite912Codec.java
index 6f7a3c6852cf6..35b28db54733a 100644
--- a/server/src/main/java/org/opensearch/index/codec/composite/composite912/Composite912Codec.java
+++ b/server/src/main/java/org/opensearch/index/codec/composite/composite912/Composite912Codec.java
@@ -8,13 +8,11 @@
 
 package org.opensearch.index.codec.composite.composite912;
 
-import org.apache.logging.log4j.Logger;
+import org.apache.lucene.backward_codecs.lucene912.Lucene912Codec;
 import org.apache.lucene.codecs.Codec;
 import org.apache.lucene.codecs.DocValuesFormat;
 import org.apache.lucene.codecs.FilterCodec;
-import org.apache.lucene.codecs.lucene912.Lucene912Codec;
 import org.opensearch.common.annotation.ExperimentalApi;
-import org.opensearch.index.codec.PerFieldMappingPostingFormatCodec;
 import org.opensearch.index.mapper.MapperService;
 
 /**
@@ -33,10 +31,6 @@ public Composite912Codec() {
         this(COMPOSITE_INDEX_CODEC_NAME, new Lucene912Codec(), null);
     }
 
-    public Composite912Codec(Lucene912Codec.Mode compressionMode, MapperService mapperService, Logger logger) {
-        this(COMPOSITE_INDEX_CODEC_NAME, new PerFieldMappingPostingFormatCodec(compressionMode, mapperService, logger), mapperService);
-    }
-
     /**
      * Sole constructor. When subclassing this codec, create a no-arg ctor and pass the delegate codec and a unique name to
      * this ctor.
diff --git a/server/src/main/java/org/opensearch/index/fielddata/FieldData.java b/server/src/main/java/org/opensearch/index/fielddata/FieldData.java
index 6db6bbccacae5..e91dc7a5045ab 100644
--- a/server/src/main/java/org/opensearch/index/fielddata/FieldData.java
+++ b/server/src/main/java/org/opensearch/index/fielddata/FieldData.java
@@ -435,7 +435,7 @@ public boolean advanceExact(int doc) throws IOException {
                     return false;
                 }
                 for (int i = 0;; ++i) {
-                    if (values.nextOrd() == SortedSetDocValues.NO_MORE_ORDS) {
+                    if (values.nextOrd() == SortedSetDocValues.NO_MORE_DOCS) {
                         count = i;
                         break;
                     }
diff --git a/server/src/main/java/org/opensearch/index/fielddata/ordinals/GlobalOrdinalMapping.java b/server/src/main/java/org/opensearch/index/fielddata/ordinals/GlobalOrdinalMapping.java
index cc5415aacd276..bd2ce5c100ae4 100644
--- a/server/src/main/java/org/opensearch/index/fielddata/ordinals/GlobalOrdinalMapping.java
+++ b/server/src/main/java/org/opensearch/index/fielddata/ordinals/GlobalOrdinalMapping.java
@@ -77,8 +77,8 @@ public boolean advanceExact(int target) throws IOException {
     @Override
     public long nextOrd() throws IOException {
         long segmentOrd = values.nextOrd();
-        if (segmentOrd == SortedSetDocValues.NO_MORE_ORDS) {
-            return SortedSetDocValues.NO_MORE_ORDS;
+        if (segmentOrd == SortedSetDocValues.NO_MORE_DOCS) {
+            return SortedSetDocValues.NO_MORE_DOCS;
         } else {
             return getGlobalOrd(segmentOrd);
         }
diff --git a/server/src/main/java/org/opensearch/index/fielddata/ordinals/MultiOrdinals.java b/server/src/main/java/org/opensearch/index/fielddata/ordinals/MultiOrdinals.java
index daccb5dfe9fca..ea91e6ddd1820 100644
--- a/server/src/main/java/org/opensearch/index/fielddata/ordinals/MultiOrdinals.java
+++ b/server/src/main/java/org/opensearch/index/fielddata/ordinals/MultiOrdinals.java
@@ -68,13 +68,13 @@ public static boolean significantlySmallerThanSinglePackedOrdinals(
         float acceptableOverheadRatio
     ) {
         int bitsPerOrd = PackedInts.bitsRequired(numOrds);
-        bitsPerOrd = PackedInts.fastestFormatAndBits(numDocsWithValue, bitsPerOrd, acceptableOverheadRatio).bitsPerValue;
+        bitsPerOrd = PackedInts.fastestFormatAndBits(numDocsWithValue, bitsPerOrd, acceptableOverheadRatio).bitsPerValue();
         // Compute the worst-case number of bits per value for offsets in the worst case, eg. if no docs have a value at the
         // beginning of the block and all docs have one at the end of the block
         final float avgValuesPerDoc = (float) numDocsWithValue / maxDoc;
         final int maxDelta = (int) Math.ceil(OFFSETS_PAGE_SIZE * (1 - avgValuesPerDoc) * avgValuesPerDoc);
         int bitsPerOffset = PackedInts.bitsRequired(maxDelta) + 1; // +1 because of the sign
-        bitsPerOffset = PackedInts.fastestFormatAndBits(maxDoc, bitsPerOffset, acceptableOverheadRatio).bitsPerValue;
+        bitsPerOffset = PackedInts.fastestFormatAndBits(maxDoc, bitsPerOffset, acceptableOverheadRatio).bitsPerValue();
 
         final long expectedMultiSizeInBytes = (long) numDocsWithValue * bitsPerOrd + (long) maxDoc * bitsPerOffset;
         final long expectedSingleSizeInBytes = (long) maxDoc * bitsPerOrd;
@@ -219,7 +219,7 @@ public boolean advanceExact(int docId) throws IOException {
         @Override
         public long nextOrd() throws IOException {
             if (currentOffset == currentEndOffset) {
-                return SortedSetDocValues.NO_MORE_ORDS;
+                return SortedSetDocValues.NO_MORE_DOCS;
             } else {
                 return ords.get(currentOffset++);
             }
diff --git a/server/src/main/java/org/opensearch/index/get/ShardGetService.java b/server/src/main/java/org/opensearch/index/get/ShardGetService.java
index d4eeb8aae8e24..082a06c8f7773 100644
--- a/server/src/main/java/org/opensearch/index/get/ShardGetService.java
+++ b/server/src/main/java/org/opensearch/index/get/ShardGetService.java
@@ -32,6 +32,7 @@
 
 package org.opensearch.index.get;
 
+import org.apache.lucene.index.DocValuesSkipIndexType;
 import org.apache.lucene.index.DocValuesType;
 import org.apache.lucene.index.FieldInfo;
 import org.apache.lucene.index.IndexOptions;
@@ -323,6 +324,7 @@ private GetResult innerGetLoadFromStoredFields(
                                 false,
                                 IndexOptions.NONE,
                                 DocValuesType.NONE,
+                                DocValuesSkipIndexType.NONE,
                                 -1,
                                 Collections.emptyMap(),
                                 0,
diff --git a/server/src/main/java/org/opensearch/index/mapper/WildcardFieldMapper.java b/server/src/main/java/org/opensearch/index/mapper/WildcardFieldMapper.java
index e43e3bda692e7..c10e96d5f5f07 100644
--- a/server/src/main/java/org/opensearch/index/mapper/WildcardFieldMapper.java
+++ b/server/src/main/java/org/opensearch/index/mapper/WildcardFieldMapper.java
@@ -37,6 +37,7 @@
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.automaton.Automaton;
 import org.apache.lucene.util.automaton.CompiledAutomaton;
+import org.apache.lucene.util.automaton.Operations;
 import org.apache.lucene.util.automaton.RegExp;
 import org.opensearch.common.lucene.BytesRefs;
 import org.opensearch.common.lucene.Lucene;
@@ -430,7 +431,7 @@ public Query wildcardQuery(String value, MultiTermQuery.RewriteMethod method, bo
                 finalValue = value;
             }
             Predicate<String> matchPredicate;
-            Automaton automaton = WildcardQuery.toAutomaton(new Term(name(), finalValue));
+            Automaton automaton = WildcardQuery.toAutomaton(new Term(name(), finalValue), Operations.DEFAULT_DETERMINIZE_WORK_LIMIT);
             CompiledAutomaton compiledAutomaton = new CompiledAutomaton(automaton);
             if (compiledAutomaton.type == CompiledAutomaton.AUTOMATON_TYPE.SINGLE) {
                 // when type equals SINGLE, #compiledAutomaton.runAutomaton is null
@@ -573,7 +574,7 @@ public Query regexpQuery(
             }
 
             RegExp regExp = new RegExp(value, syntaxFlags, matchFlags);
-            Automaton automaton = regExp.toAutomaton(maxDeterminizedStates);
+            Automaton automaton = regExp.toAutomaton();
             CompiledAutomaton compiledAutomaton = new CompiledAutomaton(automaton);
 
             Predicate<String> regexpPredicate;
@@ -650,7 +651,7 @@ private static Query regexpToQuery(String fieldName, RegExp regExp) {
                     return new MatchAllDocsQuery();
                 }
             if (query.clauses().size() == 1) {
-                return query.iterator().next().getQuery();
+                return query.iterator().next().query();
             } else if (query.clauses().size() == 0) {
                 return new MatchAllDocsQuery();
             }
@@ -804,18 +805,8 @@ public Query rewrite(IndexSearcher indexSearcher) throws IOException {
         public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) throws IOException {
             Weight firstPhaseWeight = firstPhaseQuery.createWeight(searcher, scoreMode, boost);
             return new ConstantScoreWeight(this, boost) {
-                @Override
-                public Scorer scorer(LeafReaderContext leafReaderContext) throws IOException {
-                    ScorerSupplier supplier = scorerSupplier(leafReaderContext);
-                    if (supplier == null) {
-                        return null;
-                    }
-                    return supplier.get(Long.MAX_VALUE);
-                }
-
                 @Override
                 public ScorerSupplier scorerSupplier(LeafReaderContext context) throws IOException {
-                    Weight weight = this;
                     ScorerSupplier firstPhaseSupplier = firstPhaseWeight.scorerSupplier(context);
                     if (firstPhaseSupplier == null) {
                         return null;
@@ -846,7 +837,7 @@ public float matchCost() {
                                     return MATCH_COST_ESTIMATE;
                                 }
                             };
-                            return new ConstantScoreScorer(weight, score(), scoreMode, twoPhaseIterator);
+                            return new ConstantScoreScorer(score(), scoreMode, twoPhaseIterator);
                         }
 
                         @Override
diff --git a/server/src/main/java/org/opensearch/index/query/RegexpFlag.java b/server/src/main/java/org/opensearch/index/query/RegexpFlag.java
index b7e7569f67127..f5eb1ebc98d04 100644
--- a/server/src/main/java/org/opensearch/index/query/RegexpFlag.java
+++ b/server/src/main/java/org/opensearch/index/query/RegexpFlag.java
@@ -63,7 +63,7 @@ public enum RegexpFlag {
     /**
      * Enables complement expression of the form: {@code ~&lt;expression&gt;}
      */
-    COMPLEMENT(RegExp.COMPLEMENT),
+    COMPLEMENT(RegExp.DEPRECATED_COMPLEMENT),
 
     /**
      * Enables empty language expression: {@code #}
diff --git a/server/src/main/java/org/opensearch/index/store/remote/utils/TransferManager.java b/server/src/main/java/org/opensearch/index/store/remote/utils/TransferManager.java
index 94c25202ac90c..93afe429c3d04 100644
--- a/server/src/main/java/org/opensearch/index/store/remote/utils/TransferManager.java
+++ b/server/src/main/java/org/opensearch/index/store/remote/utils/TransferManager.java
@@ -127,7 +127,7 @@ private static FileCachedIndexInput createIndexInput(FileCache fileCache, Stream
                     }
                 }
             }
-            final IndexInput luceneIndexInput = request.getDirectory().openInput(request.getFileName(), IOContext.READ);
+            final IndexInput luceneIndexInput = request.getDirectory().openInput(request.getFileName(), IOContext.DEFAULT);
             return new FileCachedIndexInput(fileCache, request.getFilePath(), luceneIndexInput);
         } catch (IOException e) {
             throw new UncheckedIOException(e);
diff --git a/server/src/main/java/org/opensearch/indices/replication/SegmentFileTransferHandler.java b/server/src/main/java/org/opensearch/indices/replication/SegmentFileTransferHandler.java
index 80ba5146535aa..756751cf0b87d 100644
--- a/server/src/main/java/org/opensearch/indices/replication/SegmentFileTransferHandler.java
+++ b/server/src/main/java/org/opensearch/indices/replication/SegmentFileTransferHandler.java
@@ -110,7 +110,7 @@ protected void onNewResource(StoreFileMetadata md) throws IOException {
                 // Segments* files require IOContext.READONCE
                 // https://github.com/apache/lucene/blob/b2d3a2b37e00f19a74949097736be8fd64745f61/lucene/test-framework/src/java/org/apache/lucene/tests/store/MockDirectoryWrapper.java#L817
                 if (md.name().startsWith(IndexFileNames.SEGMENTS) == false) {
-                    final IndexInput indexInput = store.directory().openInput(md.name(), IOContext.READ);
+                    final IndexInput indexInput = store.directory().openInput(md.name(), IOContext.DEFAULT);
                     currentInput = new InputStreamIndexInput(indexInput, md.length()) {
                         @Override
                         public void close() throws IOException {
diff --git a/server/src/main/java/org/opensearch/node/Node.java b/server/src/main/java/org/opensearch/node/Node.java
index e74fca60b0201..73ffb3946f3e4 100644
--- a/server/src/main/java/org/opensearch/node/Node.java
+++ b/server/src/main/java/org/opensearch/node/Node.java
@@ -487,8 +487,8 @@ protected Node(
                 Constants.OS_ARCH,
                 Constants.JVM_VENDOR,
                 Constants.JVM_NAME,
-                Constants.JAVA_VERSION,
-                Constants.JVM_VERSION
+                System.getProperty("java.version"),
+                Runtime.version().toString()
             );
             if (jvmInfo.getBundledJdk()) {
                 logger.info("JVM home [{}], using bundled JDK/JRE [{}]", System.getProperty("java.home"), jvmInfo.getUsingBundledJdk());
diff --git a/server/src/main/java/org/opensearch/repositories/blobstore/BlobStoreRepository.java b/server/src/main/java/org/opensearch/repositories/blobstore/BlobStoreRepository.java
index 243d0021fac2e..ace6a8231e780 100644
--- a/server/src/main/java/org/opensearch/repositories/blobstore/BlobStoreRepository.java
+++ b/server/src/main/java/org/opensearch/repositories/blobstore/BlobStoreRepository.java
@@ -4534,7 +4534,7 @@ private void snapshotFile(
     ) throws IOException {
         final BlobContainer shardContainer = shardContainer(indexId, shardId);
         final String file = fileInfo.physicalName();
-        try (IndexInput indexInput = store.openVerifyingInput(file, IOContext.READ, fileInfo.metadata())) {
+        try (IndexInput indexInput = store.openVerifyingInput(file, IOContext.READONCE, fileInfo.metadata())) {
             for (int i = 0; i < fileInfo.numberOfParts(); i++) {
                 final long partBytes = fileInfo.partBytes(i);
 
diff --git a/server/src/main/java/org/opensearch/rest/action/cat/RestCountAction.java b/server/src/main/java/org/opensearch/rest/action/cat/RestCountAction.java
index 9c054ffe1bcc7..cc85f4141023c 100644
--- a/server/src/main/java/org/opensearch/rest/action/cat/RestCountAction.java
+++ b/server/src/main/java/org/opensearch/rest/action/cat/RestCountAction.java
@@ -99,7 +99,7 @@ public RestChannelConsumer doCatRequest(final RestRequest request, final NodeCli
         return channel -> client.search(countRequest, new RestResponseListener<SearchResponse>(channel) {
             @Override
             public RestResponse buildResponse(SearchResponse countResponse) throws Exception {
-                assert countResponse.getHits().getTotalHits().relation == TotalHits.Relation.EQUAL_TO;
+                assert countResponse.getHits().getTotalHits().relation() == TotalHits.Relation.EQUAL_TO;
                 return RestTable.buildResponse(buildTable(request, countResponse), channel);
             }
         });
@@ -117,7 +117,7 @@ protected Table getTableWithHeader(final RestRequest request) {
     private Table buildTable(RestRequest request, SearchResponse response) {
         Table table = getTableWithHeader(request);
         table.startRow();
-        table.addCell(response.getHits().getTotalHits().value);
+        table.addCell(response.getHits().getTotalHits().value());
         table.endRow();
 
         return table;
diff --git a/server/src/main/java/org/opensearch/rest/action/search/RestCountAction.java b/server/src/main/java/org/opensearch/rest/action/search/RestCountAction.java
index acedd5a884596..56c20ed956037 100644
--- a/server/src/main/java/org/opensearch/rest/action/search/RestCountAction.java
+++ b/server/src/main/java/org/opensearch/rest/action/search/RestCountAction.java
@@ -118,7 +118,7 @@ public RestResponse buildResponse(SearchResponse response, XContentBuilder build
                 if (terminateAfter != DEFAULT_TERMINATE_AFTER) {
                     builder.field("terminated_early", response.isTerminatedEarly());
                 }
-                builder.field("count", response.getHits().getTotalHits().value);
+                builder.field("count", response.getHits().getTotalHits().value());
                 buildBroadcastShardsHeader(
                     builder,
                     request,
diff --git a/server/src/main/java/org/opensearch/search/MultiValueMode.java b/server/src/main/java/org/opensearch/search/MultiValueMode.java
index a99da674836f2..9595dfab0e41f 100644
--- a/server/src/main/java/org/opensearch/search/MultiValueMode.java
+++ b/server/src/main/java/org/opensearch/search/MultiValueMode.java
@@ -505,7 +505,7 @@ protected BytesRef pick(
         @Override
         protected int pick(SortedSetDocValues values) throws IOException {
             long maxOrd = -1;
-            for (long ord = values.nextOrd(); ord != SortedSetDocValues.NO_MORE_ORDS; ord = values.nextOrd()) {
+            for (long ord = values.nextOrd(); ord != SortedSetDocValues.NO_MORE_DOCS; ord = values.nextOrd()) {
                 maxOrd = ord;
             }
             return Math.toIntExact(maxOrd);
diff --git a/server/src/main/java/org/opensearch/search/SearchHits.java b/server/src/main/java/org/opensearch/search/SearchHits.java
index 8232643b353f5..963ce82e636cf 100644
--- a/server/src/main/java/org/opensearch/search/SearchHits.java
+++ b/server/src/main/java/org/opensearch/search/SearchHits.java
@@ -219,12 +219,12 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws
         builder.startObject(Fields.HITS);
         boolean totalHitAsInt = params.paramAsBoolean(RestSearchAction.TOTAL_HITS_AS_INT_PARAM, false);
         if (totalHitAsInt) {
-            long total = totalHits == null ? -1 : totalHits.value;
+            long total = totalHits == null ? -1 : totalHits.value();
             builder.field(Fields.TOTAL, total);
         } else if (totalHits != null) {
             builder.startObject(Fields.TOTAL);
-            builder.field("value", totalHits.value);
-            builder.field("relation", totalHits.relation == Relation.EQUAL_TO ? "eq" : "gte");
+            builder.field("value", totalHits.value());
+            builder.field("relation", totalHits.relation() == Relation.EQUAL_TO ? "eq" : "gte");
             builder.endObject();
         }
         if (Float.isNaN(maxScore)) {
diff --git a/server/src/main/java/org/opensearch/search/aggregations/bucket/composite/CompositeAggregator.java b/server/src/main/java/org/opensearch/search/aggregations/bucket/composite/CompositeAggregator.java
index cfe716eb57ca8..7a0bffa0cf74a 100644
--- a/server/src/main/java/org/opensearch/search/aggregations/bucket/composite/CompositeAggregator.java
+++ b/server/src/main/java/org/opensearch/search/aggregations/bucket/composite/CompositeAggregator.java
@@ -384,7 +384,7 @@ private boolean isMaybeMultivalued(LeafReaderContext context, SortField sortFiel
      * optimization and null if index sort is not applicable.
      */
     private Sort buildIndexSortPrefix(LeafReaderContext context) throws IOException {
-        Sort indexSort = context.reader().getMetaData().getSort();
+        Sort indexSort = context.reader().getMetaData().sort();
         if (indexSort == null) {
             return null;
         }
diff --git a/server/src/main/java/org/opensearch/search/aggregations/bucket/composite/GlobalOrdinalValuesSource.java b/server/src/main/java/org/opensearch/search/aggregations/bucket/composite/GlobalOrdinalValuesSource.java
index 3e5c53d470f79..e093d45476435 100644
--- a/server/src/main/java/org/opensearch/search/aggregations/bucket/composite/GlobalOrdinalValuesSource.java
+++ b/server/src/main/java/org/opensearch/search/aggregations/bucket/composite/GlobalOrdinalValuesSource.java
@@ -50,7 +50,7 @@
 
 import java.io.IOException;
 
-import static org.apache.lucene.index.SortedSetDocValues.NO_MORE_ORDS;
+import static org.apache.lucene.index.SortedSetDocValues.NO_MORE_DOCS;
 
 /**
  * A {@link SingleDimensionValuesSource} for global ordinals.
@@ -176,7 +176,7 @@ LeafBucketCollector getLeafCollector(LeafReaderContext context, LeafBucketCollec
             public void collect(int doc, long bucket) throws IOException {
                 if (dvs.advanceExact(doc)) {
                     long ord;
-                    while ((ord = dvs.nextOrd()) != NO_MORE_ORDS) {
+                    while ((ord = dvs.nextOrd()) != NO_MORE_DOCS) {
                         currentValue = ord;
                         next.collect(doc, bucket);
                     }
@@ -206,7 +206,7 @@ public void collect(int doc, long bucket) throws IOException {
                 if (currentValueIsSet == false) {
                     if (dvs.advanceExact(doc)) {
                         long ord;
-                        while ((ord = dvs.nextOrd()) != NO_MORE_ORDS) {
+                        while ((ord = dvs.nextOrd()) != NO_MORE_DOCS) {
                             if (term.equals(lookup.lookupOrd(ord))) {
                                 currentValueIsSet = true;
                                 currentValue = ord;
diff --git a/server/src/main/java/org/opensearch/search/aggregations/bucket/range/BinaryRangeAggregator.java b/server/src/main/java/org/opensearch/search/aggregations/bucket/range/BinaryRangeAggregator.java
index a48649af99be3..e46800a937800 100644
--- a/server/src/main/java/org/opensearch/search/aggregations/bucket/range/BinaryRangeAggregator.java
+++ b/server/src/main/java/org/opensearch/search/aggregations/bucket/range/BinaryRangeAggregator.java
@@ -202,7 +202,7 @@ abstract static class SortedSetRangeLeafCollector extends LeafBucketCollectorBas
         public void collect(int doc, long bucket) throws IOException {
             if (values.advanceExact(doc)) {
                 int lo = 0;
-                for (long ord = values.nextOrd(); ord != SortedSetDocValues.NO_MORE_ORDS; ord = values.nextOrd()) {
+                for (long ord = values.nextOrd(); ord != SortedSetDocValues.NO_MORE_DOCS; ord = values.nextOrd()) {
                     lo = collect(doc, ord, bucket, lo);
                 }
             }
diff --git a/server/src/main/java/org/opensearch/search/aggregations/bucket/sampler/DiversifiedOrdinalsSamplerAggregator.java b/server/src/main/java/org/opensearch/search/aggregations/bucket/sampler/DiversifiedOrdinalsSamplerAggregator.java
index 953a45971919c..8708615690621 100644
--- a/server/src/main/java/org/opensearch/search/aggregations/bucket/sampler/DiversifiedOrdinalsSamplerAggregator.java
+++ b/server/src/main/java/org/opensearch/search/aggregations/bucket/sampler/DiversifiedOrdinalsSamplerAggregator.java
@@ -148,7 +148,7 @@ public boolean advanceExact(int target) throws IOException {
                             value = globalOrds.nextOrd();
                             // Check there isn't a second value for this
                             // document
-                            if (globalOrds.nextOrd() != SortedSetDocValues.NO_MORE_ORDS) {
+                            if (globalOrds.nextOrd() != SortedSetDocValues.NO_MORE_DOCS) {
                                 throw new IllegalArgumentException("Sample diversifying key must be a single valued-field");
                             }
                             return true;
diff --git a/server/src/main/java/org/opensearch/search/aggregations/bucket/terms/GlobalOrdinalsStringTermsAggregator.java b/server/src/main/java/org/opensearch/search/aggregations/bucket/terms/GlobalOrdinalsStringTermsAggregator.java
index 9e40f7b4c9b3e..2a739ffb3d74b 100644
--- a/server/src/main/java/org/opensearch/search/aggregations/bucket/terms/GlobalOrdinalsStringTermsAggregator.java
+++ b/server/src/main/java/org/opensearch/search/aggregations/bucket/terms/GlobalOrdinalsStringTermsAggregator.java
@@ -79,8 +79,7 @@
 import java.util.function.LongUnaryOperator;
 
 import static org.opensearch.search.aggregations.InternalOrder.isKeyOrder;
-import static org.apache.lucene.index.SortedSetDocValues.NO_MORE_ORDS;
-import static org.apache.lucene.search.DocIdSetIterator.NO_MORE_DOCS;
+import static org.apache.lucene.index.SortedSetDocValues.NO_MORE_DOCS;
 
 /**
  * An aggregator of string values that relies on global ordinals in order to build buckets.
@@ -289,7 +288,7 @@ public void collect(int doc, long owningBucketOrd) throws IOException {
                     if (false == globalOrds.advanceExact(doc)) {
                         return;
                     }
-                    for (long globalOrd = globalOrds.nextOrd(); globalOrd != NO_MORE_ORDS; globalOrd = globalOrds.nextOrd()) {
+                    for (long globalOrd = globalOrds.nextOrd(); globalOrd != NO_MORE_DOCS; globalOrd = globalOrds.nextOrd()) {
                         collectionStrategy.collectGlobalOrd(owningBucketOrd, doc, globalOrd, sub);
                     }
                 }
@@ -301,7 +300,7 @@ public void collect(int doc, long owningBucketOrd) throws IOException {
                 if (false == globalOrds.advanceExact(doc)) {
                     return;
                 }
-                for (long globalOrd = globalOrds.nextOrd(); globalOrd != NO_MORE_ORDS; globalOrd = globalOrds.nextOrd()) {
+                for (long globalOrd = globalOrds.nextOrd(); globalOrd != NO_MORE_DOCS; globalOrd = globalOrds.nextOrd()) {
                     if (false == acceptedGlobalOrdinals.test(globalOrd)) {
                         continue;
                     }
@@ -478,7 +477,7 @@ public void collect(int doc, long owningBucketOrd) throws IOException {
                     if (false == segmentOrds.advanceExact(doc)) {
                         return;
                     }
-                    for (long segmentOrd = segmentOrds.nextOrd(); segmentOrd != NO_MORE_ORDS; segmentOrd = segmentOrds.nextOrd()) {
+                    for (long segmentOrd = segmentOrds.nextOrd(); segmentOrd != NO_MORE_DOCS; segmentOrd = segmentOrds.nextOrd()) {
                         long docCount = docCountProvider.getDocCount(doc);
                         segmentDocCounts.increment(segmentOrd + 1, docCount);
                     }
diff --git a/server/src/main/java/org/opensearch/search/aggregations/metrics/CardinalityAggregator.java b/server/src/main/java/org/opensearch/search/aggregations/metrics/CardinalityAggregator.java
index 0f3d975960364..523eb69e0bc00 100644
--- a/server/src/main/java/org/opensearch/search/aggregations/metrics/CardinalityAggregator.java
+++ b/server/src/main/java/org/opensearch/search/aggregations/metrics/CardinalityAggregator.java
@@ -554,7 +554,7 @@ public void collect(int doc, long bucketOrd) throws IOException {
                 visitedOrds.set(bucketOrd, bits);
             }
             if (values.advanceExact(doc)) {
-                for (long ord = values.nextOrd(); ord != SortedSetDocValues.NO_MORE_ORDS; ord = values.nextOrd()) {
+                for (long ord = values.nextOrd(); ord != SortedSetDocValues.NO_MORE_DOCS; ord = values.nextOrd()) {
                     bits.set((int) ord);
                 }
             }
diff --git a/server/src/main/java/org/opensearch/search/aggregations/metrics/InternalTopHits.java b/server/src/main/java/org/opensearch/search/aggregations/metrics/InternalTopHits.java
index e82f49aa13600..fab6113b397da 100644
--- a/server/src/main/java/org/opensearch/search/aggregations/metrics/InternalTopHits.java
+++ b/server/src/main/java/org/opensearch/search/aggregations/metrics/InternalTopHits.java
@@ -183,7 +183,7 @@ public InternalAggregation reduce(List<InternalAggregation> aggregations, Reduce
             } while (shardDocs[scoreDoc.shardIndex].scoreDocs[position] != scoreDoc);
             hits[i] = shardHits[scoreDoc.shardIndex].getAt(position);
         }
-        assert reducedTopDocs.totalHits.relation == Relation.EQUAL_TO;
+        assert reducedTopDocs.totalHits.relation() == Relation.EQUAL_TO;
         return new InternalTopHits(
             name,
             this.from,
@@ -224,8 +224,8 @@ public boolean equals(Object obj) {
         InternalTopHits other = (InternalTopHits) obj;
         if (from != other.from) return false;
         if (size != other.size) return false;
-        if (topDocs.topDocs.totalHits.value != other.topDocs.topDocs.totalHits.value) return false;
-        if (topDocs.topDocs.totalHits.relation != other.topDocs.topDocs.totalHits.relation) return false;
+        if (topDocs.topDocs.totalHits.value() != other.topDocs.topDocs.totalHits.value()) return false;
+        if (topDocs.topDocs.totalHits.relation() != other.topDocs.topDocs.totalHits.relation()) return false;
         if (topDocs.topDocs.scoreDocs.length != other.topDocs.topDocs.scoreDocs.length) return false;
         for (int d = 0; d < topDocs.topDocs.scoreDocs.length; d++) {
             ScoreDoc thisDoc = topDocs.topDocs.scoreDocs[d];
@@ -251,8 +251,8 @@ public int hashCode() {
         int hashCode = super.hashCode();
         hashCode = 31 * hashCode + Integer.hashCode(from);
         hashCode = 31 * hashCode + Integer.hashCode(size);
-        hashCode = 31 * hashCode + Long.hashCode(topDocs.topDocs.totalHits.value);
-        hashCode = 31 * hashCode + topDocs.topDocs.totalHits.relation.hashCode();
+        hashCode = 31 * hashCode + Long.hashCode(topDocs.topDocs.totalHits.value());
+        hashCode = 31 * hashCode + topDocs.topDocs.totalHits.relation().hashCode();
         for (int d = 0; d < topDocs.topDocs.scoreDocs.length; d++) {
             ScoreDoc doc = topDocs.topDocs.scoreDocs[d];
             hashCode = 31 * hashCode + doc.doc;
diff --git a/server/src/main/java/org/opensearch/search/aggregations/metrics/MetricInspectionHelper.java b/server/src/main/java/org/opensearch/search/aggregations/metrics/MetricInspectionHelper.java
index 47e27da5394b3..8408036772673 100644
--- a/server/src/main/java/org/opensearch/search/aggregations/metrics/MetricInspectionHelper.java
+++ b/server/src/main/java/org/opensearch/search/aggregations/metrics/MetricInspectionHelper.java
@@ -78,7 +78,7 @@ public static boolean hasValue(InternalTDigestPercentiles agg) {
     }
 
     public static boolean hasValue(InternalTopHits agg) {
-        return (agg.getHits().getTotalHits().value == 0
+        return (agg.getHits().getTotalHits().value() == 0
             && Double.isNaN(agg.getHits().getMaxScore())
             && Double.isNaN(agg.getTopDocs().maxScore)) == false;
     }
diff --git a/server/src/main/java/org/opensearch/search/aggregations/support/MissingValues.java b/server/src/main/java/org/opensearch/search/aggregations/support/MissingValues.java
index d21737a8366b2..b9595941608d0 100644
--- a/server/src/main/java/org/opensearch/search/aggregations/support/MissingValues.java
+++ b/server/src/main/java/org/opensearch/search/aggregations/support/MissingValues.java
@@ -308,7 +308,7 @@ public long nextOrd() throws IOException {
                     // NO_MORE_ORDS so on the next call we indicate there are no
                     // more values
                     long ordToReturn = nextMissingOrd;
-                    nextMissingOrd = SortedSetDocValues.NO_MORE_ORDS;
+                    nextMissingOrd = SortedSetDocValues.NO_MORE_DOCS;
                     return ordToReturn;
                 }
             }
@@ -376,7 +376,7 @@ public long nextOrd() throws IOException {
                     // NO_MORE_ORDS so on the next call we indicate there are no
                     // more values
                     long ordToReturn = nextMissingOrd;
-                    nextMissingOrd = SortedSetDocValues.NO_MORE_ORDS;
+                    nextMissingOrd = SortedSetDocValues.NO_MORE_DOCS;
                     return ordToReturn;
                 }
             }
diff --git a/server/src/main/java/org/opensearch/search/approximate/ApproximatePointRangeQuery.java b/server/src/main/java/org/opensearch/search/approximate/ApproximatePointRangeQuery.java
index 6ff01f5f39d36..fe3d66c674a82 100644
--- a/server/src/main/java/org/opensearch/search/approximate/ApproximatePointRangeQuery.java
+++ b/server/src/main/java/org/opensearch/search/approximate/ApproximatePointRangeQuery.java
@@ -359,7 +359,7 @@ public ScorerSupplier scorerSupplier(LeafReaderContext context) throws IOExcepti
                             public Scorer get(long leadCost) throws IOException {
                                 intersectLeft(values.getPointTree(), visitor, docCount);
                                 DocIdSetIterator iterator = result.build().iterator();
-                                return new ConstantScoreScorer(weight, score(), scoreMode, iterator);
+                                return new ConstantScoreScorer(score(), scoreMode, iterator);
                             }
 
                             @Override
@@ -387,7 +387,7 @@ public long cost() {
                             public Scorer get(long leadCost) throws IOException {
                                 intersectRight(values.getPointTree(), visitor, docCount);
                                 DocIdSetIterator iterator = result.build().iterator();
-                                return new ConstantScoreScorer(weight, score(), scoreMode, iterator);
+                                return new ConstantScoreScorer(score(), scoreMode, iterator);
                             }
 
                             @Override
@@ -404,15 +404,6 @@ public long cost() {
                 }
             }
 
-            @Override
-            public Scorer scorer(LeafReaderContext context) throws IOException {
-                ScorerSupplier scorerSupplier = scorerSupplier(context);
-                if (scorerSupplier == null) {
-                    return null;
-                }
-                return scorerSupplier.get(Long.MAX_VALUE);
-            }
-
             @Override
             public int count(LeafReaderContext context) throws IOException {
                 return pointRangeQueryWeight.count(context);
diff --git a/server/src/main/java/org/opensearch/search/fetch/subphase/highlight/FragmentBuilderHelper.java b/server/src/main/java/org/opensearch/search/fetch/subphase/highlight/FragmentBuilderHelper.java
index e037ae5544a07..2e94a7ba0b3f6 100644
--- a/server/src/main/java/org/opensearch/search/fetch/subphase/highlight/FragmentBuilderHelper.java
+++ b/server/src/main/java/org/opensearch/search/fetch/subphase/highlight/FragmentBuilderHelper.java
@@ -75,13 +75,13 @@ public static WeightedFragInfo fixWeightedFragInfo(MappedFieldType fieldType, Fi
             CollectionUtil.introSort(subInfos, new Comparator<SubInfo>() {
                 @Override
                 public int compare(SubInfo o1, SubInfo o2) {
-                    int startOffset = o1.getTermsOffsets().get(0).getStartOffset();
-                    int startOffset2 = o2.getTermsOffsets().get(0).getStartOffset();
+                    int startOffset = o1.termsOffsets().get(0).getStartOffset();
+                    int startOffset2 = o2.termsOffsets().get(0).getStartOffset();
                     return FragmentBuilderHelper.compare(startOffset, startOffset2);
                 }
             });
             return new WeightedFragInfo(
-                Math.min(fragInfo.getSubInfos().get(0).getTermsOffsets().get(0).getStartOffset(), fragInfo.getStartOffset()),
+                Math.min(fragInfo.getSubInfos().get(0).termsOffsets().get(0).getStartOffset(), fragInfo.getStartOffset()),
                 fragInfo.getEndOffset(),
                 subInfos,
                 fragInfo.getTotalBoost()
diff --git a/server/src/main/java/org/opensearch/search/profile/query/ProfileScorer.java b/server/src/main/java/org/opensearch/search/profile/query/ProfileScorer.java
index 319281449195b..28b693ee03ad5 100644
--- a/server/src/main/java/org/opensearch/search/profile/query/ProfileScorer.java
+++ b/server/src/main/java/org/opensearch/search/profile/query/ProfileScorer.java
@@ -35,7 +35,6 @@
 import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.search.Scorer;
 import org.apache.lucene.search.TwoPhaseIterator;
-import org.apache.lucene.search.Weight;
 import org.opensearch.search.profile.AbstractProfileBreakdown;
 import org.opensearch.search.profile.Timer;
 
@@ -51,15 +50,12 @@
 final class ProfileScorer extends Scorer {
 
     private final Scorer scorer;
-    private ProfileWeight profileWeight;
 
     private final Timer scoreTimer, nextDocTimer, advanceTimer, matchTimer, shallowAdvanceTimer, computeMaxScoreTimer,
         setMinCompetitiveScoreTimer;
 
-    ProfileScorer(ProfileWeight w, Scorer scorer, AbstractProfileBreakdown<QueryTimingType> profile) throws IOException {
-        super(w);
+    ProfileScorer(Scorer scorer, AbstractProfileBreakdown<QueryTimingType> profile) throws IOException {
         this.scorer = scorer;
-        this.profileWeight = w;
         scoreTimer = profile.getTimer(QueryTimingType.SCORE);
         nextDocTimer = profile.getTimer(QueryTimingType.NEXT_DOC);
         advanceTimer = profile.getTimer(QueryTimingType.ADVANCE);
@@ -84,11 +80,6 @@ public float score() throws IOException {
         }
     }
 
-    @Override
-    public Weight getWeight() {
-        return profileWeight;
-    }
-
     @Override
     public Collection<ChildScorable> getChildren() throws IOException {
         return scorer.getChildren();
diff --git a/server/src/main/java/org/opensearch/search/profile/query/ProfileWeight.java b/server/src/main/java/org/opensearch/search/profile/query/ProfileWeight.java
index c7e70d8d88007..f190a9734c1a5 100644
--- a/server/src/main/java/org/opensearch/search/profile/query/ProfileWeight.java
+++ b/server/src/main/java/org/opensearch/search/profile/query/ProfileWeight.java
@@ -33,7 +33,6 @@
 package org.opensearch.search.profile.query;
 
 import org.apache.lucene.index.LeafReaderContext;
-import org.apache.lucene.search.BulkScorer;
 import org.apache.lucene.search.Collector;
 import org.apache.lucene.search.Explanation;
 import org.apache.lucene.search.Query;
@@ -63,15 +62,6 @@ public ProfileWeight(Query query, Weight subQueryWeight, ContextualProfileBreakd
         this.profile = profile;
     }
 
-    @Override
-    public Scorer scorer(LeafReaderContext context) throws IOException {
-        ScorerSupplier supplier = scorerSupplier(context);
-        if (supplier == null) {
-            return null;
-        }
-        return supplier.get(Long.MAX_VALUE);
-    }
-
     @Override
     public ScorerSupplier scorerSupplier(LeafReaderContext context) throws IOException {
         Timer timer = profile.context(context).getTimer(QueryTimingType.BUILD_SCORER);
@@ -86,14 +76,13 @@ public ScorerSupplier scorerSupplier(LeafReaderContext context) throws IOExcepti
             return null;
         }
 
-        final ProfileWeight weight = this;
         return new ScorerSupplier() {
 
             @Override
             public Scorer get(long loadCost) throws IOException {
                 timer.start();
                 try {
-                    return new ProfileScorer(weight, subQueryScorerSupplier.get(loadCost), profile.context(context));
+                    return new ProfileScorer(subQueryScorerSupplier.get(loadCost), profile.context(context));
                 } finally {
                     timer.stop();
                 }
@@ -111,18 +100,6 @@ public long cost() {
         };
     }
 
-    @Override
-    public BulkScorer bulkScorer(LeafReaderContext context) throws IOException {
-        // We use the default bulk scorer instead of the specialized one. The reason
-        // is that Lucene's BulkScorers do everything at once: finding matches,
-        // scoring them and calling the collector, so they make it impossible to
-        // see where time is spent, which is the purpose of query profiling.
-        // The default bulk scorer will pull a scorer and iterate over matches,
-        // this might be a significantly different execution path for some queries
-        // like disjunctions, but in general this is what is done anyway
-        return super.bulkScorer(context);
-    }
-
     @Override
     public Explanation explain(LeafReaderContext context, int doc) throws IOException {
         return subQueryWeight.explain(context, doc);
diff --git a/server/src/main/java/org/opensearch/search/query/QueryPhase.java b/server/src/main/java/org/opensearch/search/query/QueryPhase.java
index 55b7c0bc5178d..58be02cc413dd 100644
--- a/server/src/main/java/org/opensearch/search/query/QueryPhase.java
+++ b/server/src/main/java/org/opensearch/search/query/QueryPhase.java
@@ -388,7 +388,7 @@ private static boolean canEarlyTerminate(IndexReader reader, SortAndFormats sort
         }
         final Sort sort = sortAndFormats.sort;
         for (LeafReaderContext ctx : reader.leaves()) {
-            Sort indexSort = ctx.reader().getMetaData().getSort();
+            Sort indexSort = ctx.reader().getMetaData().sort();
             if (indexSort == null || Lucene.canEarlyTerminate(sort, indexSort) == false) {
                 return false;
             }
diff --git a/server/src/main/java/org/opensearch/search/query/TopDocsCollectorContext.java b/server/src/main/java/org/opensearch/search/query/TopDocsCollectorContext.java
index f780f6fe32af2..01ac25cdd9054 100644
--- a/server/src/main/java/org/opensearch/search/query/TopDocsCollectorContext.java
+++ b/server/src/main/java/org/opensearch/search/query/TopDocsCollectorContext.java
@@ -581,7 +581,7 @@ TopDocsAndMaxScore newTopDocs(final TopDocs topDocs, final float maxScore, final
             // artificially reducing the number of total hits and doc scores.
             ScoreDoc[] scoreDocs = topDocs.scoreDocs;
             if (terminatedAfter != null) {
-                if (totalHits.value > terminatedAfter) {
+                if (totalHits.value() > terminatedAfter) {
                     totalHits = new TotalHits(terminatedAfter, TotalHits.Relation.GREATER_THAN_OR_EQUAL_TO);
                 }
 
diff --git a/server/src/main/java/org/opensearch/search/slice/DocValuesSliceQuery.java b/server/src/main/java/org/opensearch/search/slice/DocValuesSliceQuery.java
index 856e103193463..3b0e981aed81a 100644
--- a/server/src/main/java/org/opensearch/search/slice/DocValuesSliceQuery.java
+++ b/server/src/main/java/org/opensearch/search/slice/DocValuesSliceQuery.java
@@ -90,7 +90,7 @@ public float matchCost() {
                         return 10;
                     }
                 };
-                return new ConstantScoreScorer(this, score(), scoreMode, twoPhase);
+                return new ConstantScoreScorer(score(), scoreMode, twoPhase);
             }
 
             @Override
diff --git a/server/src/main/java/org/opensearch/search/sort/SortedWiderNumericSortField.java b/server/src/main/java/org/opensearch/search/sort/SortedWiderNumericSortField.java
index 10cc832fdb684..65d8c60bc404e 100644
--- a/server/src/main/java/org/opensearch/search/sort/SortedWiderNumericSortField.java
+++ b/server/src/main/java/org/opensearch/search/sort/SortedWiderNumericSortField.java
@@ -81,6 +81,16 @@ public int compareValues(Number first, Number second) {
                     return Double.compare(first.doubleValue(), second.doubleValue());
                 }
             }
+
+            @Override
+            protected long missingValueAsComparableLong() {
+                throw new UnsupportedOperationException();
+            }
+
+            @Override
+            protected long sortableBytesToLong(byte[] bytes) {
+                throw new UnsupportedOperationException();
+            }
         };
     }
 
diff --git a/server/src/main/java/org/opensearch/search/suggest/phrase/DirectCandidateGenerator.java b/server/src/main/java/org/opensearch/search/suggest/phrase/DirectCandidateGenerator.java
index 1a00cb9465771..4fa6e262e89ad 100644
--- a/server/src/main/java/org/opensearch/search/suggest/phrase/DirectCandidateGenerator.java
+++ b/server/src/main/java/org/opensearch/search/suggest/phrase/DirectCandidateGenerator.java
@@ -131,7 +131,7 @@ public DirectCandidateGenerator(
      */
     @Override
     public boolean isKnownWord(BytesRef term) throws IOException {
-        return termStats(term).docFreq > 0;
+        return termStats(term).docFreq() > 0;
     }
 
     /* (non-Javadoc)
@@ -173,7 +173,7 @@ public CandidateSet drawCandidates(CandidateSet set) throws IOException {
                   because that's what {@link DirectSpellChecker#suggestSimilar} expects
                   when filtering terms.
                  */
-                int threshold = thresholdTermFrequency(original.termStats.docFreq);
+                int threshold = thresholdTermFrequency(original.termStats.docFreq());
                 if (threshold == Integer.MAX_VALUE) {
                     // the threshold is the max possible frequency so we can skip the search
                     return set;
@@ -267,7 +267,7 @@ public void nextToken() throws IOException {
     }
 
     private double score(TermStats termStats, double errorScore, long dictionarySize) {
-        return errorScore * (((double) termStats.totalTermFreq + 1) / ((double) dictionarySize + 1));
+        return errorScore * (((double) termStats.totalTermFreq() + 1) / ((double) dictionarySize + 1));
     }
 
     // package protected for test
diff --git a/server/src/main/java/org/opensearch/search/suggest/phrase/LaplaceScorer.java b/server/src/main/java/org/opensearch/search/suggest/phrase/LaplaceScorer.java
index 7ac1d14576ea1..2c307e9464705 100644
--- a/server/src/main/java/org/opensearch/search/suggest/phrase/LaplaceScorer.java
+++ b/server/src/main/java/org/opensearch/search/suggest/phrase/LaplaceScorer.java
@@ -64,7 +64,7 @@ protected double scoreUnigram(Candidate word) throws IOException {
     @Override
     protected double scoreBigram(Candidate word, Candidate w_1) throws IOException {
         join(separator, spare, w_1.term, word.term);
-        return (alpha + frequency(spare.get())) / (w_1.termStats.totalTermFreq + alpha * numTerms);
+        return (alpha + frequency(spare.get())) / (w_1.termStats.totalTermFreq() + alpha * numTerms);
     }
 
     @Override
diff --git a/server/src/main/java/org/opensearch/search/suggest/phrase/LinearInterpolatingScorer.java b/server/src/main/java/org/opensearch/search/suggest/phrase/LinearInterpolatingScorer.java
index e012dde78c59e..6da733e97efdd 100644
--- a/server/src/main/java/org/opensearch/search/suggest/phrase/LinearInterpolatingScorer.java
+++ b/server/src/main/java/org/opensearch/search/suggest/phrase/LinearInterpolatingScorer.java
@@ -86,7 +86,7 @@ protected double scoreBigram(Candidate word, Candidate w_1) throws IOException {
         if (count < 1) {
             return unigramLambda * scoreUnigram(word);
         }
-        return bigramLambda * (count / (0.5d + w_1.termStats.totalTermFreq)) + unigramLambda * scoreUnigram(word);
+        return bigramLambda * (count / (0.5d + w_1.termStats.totalTermFreq())) + unigramLambda * scoreUnigram(word);
     }
 
     @Override
diff --git a/server/src/main/java/org/opensearch/search/suggest/phrase/NoisyChannelSpellChecker.java b/server/src/main/java/org/opensearch/search/suggest/phrase/NoisyChannelSpellChecker.java
index e8ba90f353f02..c4b531229ae7b 100644
--- a/server/src/main/java/org/opensearch/search/suggest/phrase/NoisyChannelSpellChecker.java
+++ b/server/src/main/java/org/opensearch/search/suggest/phrase/NoisyChannelSpellChecker.java
@@ -98,7 +98,7 @@ public void nextToken() throws IOException {
                 if (posIncAttr.getPositionIncrement() == 0 && typeAttribute.type() == SynonymFilter.TYPE_SYNONYM) {
                     assert currentSet != null;
                     TermStats termStats = generator.termStats(term);
-                    if (termStats.docFreq > 0) {
+                    if (termStats.docFreq() > 0) {
                         currentSet.addOneCandidate(generator.createCandidate(BytesRef.deepCopyOf(term), termStats, realWordLikelihood));
                     }
                 } else {
diff --git a/server/src/main/java/org/opensearch/search/suggest/phrase/StupidBackoffScorer.java b/server/src/main/java/org/opensearch/search/suggest/phrase/StupidBackoffScorer.java
index 35de07015b853..4b66eb0f10301 100644
--- a/server/src/main/java/org/opensearch/search/suggest/phrase/StupidBackoffScorer.java
+++ b/server/src/main/java/org/opensearch/search/suggest/phrase/StupidBackoffScorer.java
@@ -63,7 +63,7 @@ protected double scoreBigram(Candidate word, Candidate w_1) throws IOException {
         if (count < 1) {
             return discount * scoreUnigram(word);
         }
-        return count / (w_1.termStats.totalTermFreq + 0.00000000001d);
+        return count / (w_1.termStats.totalTermFreq() + 0.00000000001d);
     }
 
     @Override
@@ -78,7 +78,7 @@ protected double scoreTrigram(Candidate w, Candidate w_1, Candidate w_2) throws
         join(separator, spare, w_2.term, w_1.term, w.term);
         long trigramCount = frequency(spare.get());
         if (trigramCount < 1) {
-            return discount * (bigramCount / (w_1.termStats.totalTermFreq + 0.00000000001d));
+            return discount * (bigramCount / (w_1.termStats.totalTermFreq() + 0.00000000001d));
         }
         return trigramCount / (bigramCount + 0.00000000001d);
     }
diff --git a/server/src/main/java/org/opensearch/telemetry/tracing/listener/TraceableSearchRequestOperationsListener.java b/server/src/main/java/org/opensearch/telemetry/tracing/listener/TraceableSearchRequestOperationsListener.java
index 71fb59194c447..e74f172c85189 100644
--- a/server/src/main/java/org/opensearch/telemetry/tracing/listener/TraceableSearchRequestOperationsListener.java
+++ b/server/src/main/java/org/opensearch/telemetry/tracing/listener/TraceableSearchRequestOperationsListener.java
@@ -69,7 +69,7 @@ public void onRequestEnd(SearchPhaseContext context, SearchRequestContext search
         // add response-related attributes on request end
         requestSpan.addAttribute(
             AttributeNames.TOTAL_HITS,
-            searchRequestContext.totalHits() == null ? 0 : searchRequestContext.totalHits().value
+            searchRequestContext.totalHits() == null ? 0 : searchRequestContext.totalHits().value()
         );
     }
 }
diff --git a/server/src/main/resources/META-INF/services/org.apache.lucene.codecs.Codec b/server/src/main/resources/META-INF/services/org.apache.lucene.codecs.Codec
index 16742fd33ed43..dd744d91dc63a 100644
--- a/server/src/main/resources/META-INF/services/org.apache.lucene.codecs.Codec
+++ b/server/src/main/resources/META-INF/services/org.apache.lucene.codecs.Codec
@@ -1 +1,2 @@
 org.opensearch.index.codec.composite.composite912.Composite912Codec
+org.opensearch.index.codec.composite.composite100.Composite100Codec
diff --git a/server/src/test/java/org/opensearch/action/search/DfsQueryPhaseTests.java b/server/src/test/java/org/opensearch/action/search/DfsQueryPhaseTests.java
index 6952841c295e2..2dd2d9f9576a9 100644
--- a/server/src/test/java/org/opensearch/action/search/DfsQueryPhaseTests.java
+++ b/server/src/test/java/org/opensearch/action/search/DfsQueryPhaseTests.java
@@ -155,11 +155,11 @@ public void run() throws IOException {
         assertNotNull(responseRef.get());
         assertNotNull(responseRef.get().get(0));
         assertNull(responseRef.get().get(0).fetchResult());
-        assertEquals(1, responseRef.get().get(0).queryResult().topDocs().topDocs.totalHits.value);
+        assertEquals(1, responseRef.get().get(0).queryResult().topDocs().topDocs.totalHits.value());
         assertEquals(42, responseRef.get().get(0).queryResult().topDocs().topDocs.scoreDocs[0].doc);
         assertNotNull(responseRef.get().get(1));
         assertNull(responseRef.get().get(1).fetchResult());
-        assertEquals(1, responseRef.get().get(1).queryResult().topDocs().topDocs.totalHits.value);
+        assertEquals(1, responseRef.get().get(1).queryResult().topDocs().topDocs.totalHits.value());
         assertEquals(84, responseRef.get().get(1).queryResult().topDocs().topDocs.scoreDocs[0].doc);
         assertTrue(mockSearchPhaseContext.releasedSearchContexts.isEmpty());
         assertEquals(2, mockSearchPhaseContext.numSuccess.get());
@@ -240,7 +240,7 @@ public void run() throws IOException {
         assertNotNull(responseRef.get());
         assertNotNull(responseRef.get().get(0));
         assertNull(responseRef.get().get(0).fetchResult());
-        assertEquals(1, responseRef.get().get(0).queryResult().topDocs().topDocs.totalHits.value);
+        assertEquals(1, responseRef.get().get(0).queryResult().topDocs().topDocs.totalHits.value());
         assertEquals(42, responseRef.get().get(0).queryResult().topDocs().topDocs.scoreDocs[0].doc);
         assertNull(responseRef.get().get(1));
 
diff --git a/server/src/test/java/org/opensearch/action/search/FetchSearchPhaseTests.java b/server/src/test/java/org/opensearch/action/search/FetchSearchPhaseTests.java
index 1eb3a44642806..c5db475e9db02 100644
--- a/server/src/test/java/org/opensearch/action/search/FetchSearchPhaseTests.java
+++ b/server/src/test/java/org/opensearch/action/search/FetchSearchPhaseTests.java
@@ -114,7 +114,7 @@ public void run() {
         mockSearchPhaseContext.assertNoFailure();
         SearchResponse searchResponse = mockSearchPhaseContext.searchResponse.get();
         assertNotNull(searchResponse);
-        assertEquals(numHits, searchResponse.getHits().getTotalHits().value);
+        assertEquals(numHits, searchResponse.getHits().getTotalHits().value());
         if (numHits != 0) {
             assertEquals(42, searchResponse.getHits().getAt(0).docId());
         }
@@ -209,7 +209,7 @@ public void run() {
         mockSearchPhaseContext.assertNoFailure();
         SearchResponse searchResponse = mockSearchPhaseContext.searchResponse.get();
         assertNotNull(searchResponse);
-        assertEquals(2, searchResponse.getHits().getTotalHits().value);
+        assertEquals(2, searchResponse.getHits().getTotalHits().value());
         assertEquals(84, searchResponse.getHits().getAt(0).docId());
         assertEquals(42, searchResponse.getHits().getAt(1).docId());
         assertEquals(0, searchResponse.getFailedShards());
@@ -302,7 +302,7 @@ public void run() {
         mockSearchPhaseContext.assertNoFailure();
         SearchResponse searchResponse = mockSearchPhaseContext.searchResponse.get();
         assertNotNull(searchResponse);
-        assertEquals(2, searchResponse.getHits().getTotalHits().value);
+        assertEquals(2, searchResponse.getHits().getTotalHits().value());
         assertEquals(84, searchResponse.getHits().getAt(0).docId());
         assertEquals(1, searchResponse.getFailedShards());
         assertEquals(1, searchResponse.getSuccessfulShards());
@@ -387,7 +387,7 @@ public void run() {
         mockSearchPhaseContext.assertNoFailure();
         SearchResponse searchResponse = mockSearchPhaseContext.searchResponse.get();
         assertNotNull(searchResponse);
-        assertEquals(numHits, searchResponse.getHits().getTotalHits().value);
+        assertEquals(numHits, searchResponse.getHits().getTotalHits().value());
         assertEquals(Math.min(numHits, resultSetSize), searchResponse.getHits().getHits().length);
         SearchHit[] hits = searchResponse.getHits().getHits();
         for (int i = 0; i < hits.length; i++) {
@@ -582,7 +582,7 @@ public void run() {
         mockSearchPhaseContext.assertNoFailure();
         SearchResponse searchResponse = mockSearchPhaseContext.searchResponse.get();
         assertNotNull(searchResponse);
-        assertEquals(2, searchResponse.getHits().getTotalHits().value);
+        assertEquals(2, searchResponse.getHits().getTotalHits().value());
         assertEquals(1, searchResponse.getHits().getHits().length);
         assertEquals(84, searchResponse.getHits().getAt(0).docId());
         assertEquals(0, searchResponse.getFailedShards());
diff --git a/server/src/test/java/org/opensearch/action/search/SearchPhaseControllerTests.java b/server/src/test/java/org/opensearch/action/search/SearchPhaseControllerTests.java
index a927f733cc504..964f79d23447a 100644
--- a/server/src/test/java/org/opensearch/action/search/SearchPhaseControllerTests.java
+++ b/server/src/test/java/org/opensearch/action/search/SearchPhaseControllerTests.java
@@ -356,8 +356,8 @@ public void testMerge() {
             if (trackTotalHits == SearchContext.TRACK_TOTAL_HITS_DISABLED) {
                 assertNull(mergedResponse.hits.getTotalHits());
             } else {
-                assertThat(mergedResponse.hits.getTotalHits().value, equalTo(0L));
-                assertEquals(mergedResponse.hits.getTotalHits().relation, Relation.EQUAL_TO);
+                assertThat(mergedResponse.hits.getTotalHits().value(), equalTo(0L));
+                assertEquals(mergedResponse.hits.getTotalHits().relation(), Relation.EQUAL_TO);
             }
             for (SearchHit hit : mergedResponse.hits().getHits()) {
                 SearchPhaseResult searchPhaseResult = fetchResults.get(hit.getShard().getShardId().id());
@@ -583,8 +583,8 @@ private static int getTotalQueryHits(AtomicArray<SearchPhaseResult> results) {
         int resultCount = 0;
         for (SearchPhaseResult shardResult : results.asList()) {
             TopDocs topDocs = shardResult.queryResult().topDocs().topDocs;
-            assert topDocs.totalHits.relation == Relation.EQUAL_TO;
-            resultCount += (int) topDocs.totalHits.value;
+            assert topDocs.totalHits.relation() == Relation.EQUAL_TO;
+            resultCount += (int) topDocs.totalHits.value();
         }
         return resultCount;
     }
@@ -820,7 +820,7 @@ public void testConsumerConcurrently() throws Exception {
         assertEquals(max.get(), internalMax.getValue(), 0.0D);
         assertEquals(1, reduce.sortedTopDocs.scoreDocs.length);
         assertEquals(max.get(), reduce.maxScore, 0.0f);
-        assertEquals(expectedNumResults, reduce.totalHits.value);
+        assertEquals(expectedNumResults, reduce.totalHits.value());
         assertEquals(max.get(), reduce.sortedTopDocs.scoreDocs[0].score, 0.0f);
         assertFalse(reduce.sortedTopDocs.isSortedByField);
         assertNull(reduce.sortedTopDocs.sortFields);
@@ -872,7 +872,7 @@ public void testConsumerOnlyAggs() throws Exception {
         assertEquals(max.get(), internalMax.getValue(), 0.0D);
         assertEquals(0, reduce.sortedTopDocs.scoreDocs.length);
         assertEquals(max.get(), reduce.maxScore, 0.0f);
-        assertEquals(expectedNumResults, reduce.totalHits.value);
+        assertEquals(expectedNumResults, reduce.totalHits.value());
         assertFalse(reduce.sortedTopDocs.isSortedByField);
         assertNull(reduce.sortedTopDocs.sortFields);
         assertNull(reduce.sortedTopDocs.collapseField);
@@ -921,7 +921,7 @@ public void testConsumerOnlyHits() throws Exception {
         assertAggReduction(request);
         assertEquals(1, reduce.sortedTopDocs.scoreDocs.length);
         assertEquals(max.get(), reduce.maxScore, 0.0f);
-        assertEquals(expectedNumResults, reduce.totalHits.value);
+        assertEquals(expectedNumResults, reduce.totalHits.value());
         assertEquals(max.get(), reduce.sortedTopDocs.scoreDocs[0].score, 0.0f);
         assertFalse(reduce.sortedTopDocs.isSortedByField);
         assertNull(reduce.sortedTopDocs.sortFields);
@@ -980,7 +980,7 @@ public void testReduceTopNWithFromOffset() throws Exception {
         ScoreDoc[] scoreDocs = reduce.sortedTopDocs.scoreDocs;
         assertEquals(5, scoreDocs.length);
         assertEquals(100.f, reduce.maxScore, 0.0f);
-        assertEquals(12, reduce.totalHits.value);
+        assertEquals(12, reduce.totalHits.value());
         assertEquals(95.0f, scoreDocs[0].score, 0.0f);
         assertEquals(94.0f, scoreDocs[1].score, 0.0f);
         assertEquals(93.0f, scoreDocs[2].score, 0.0f);
@@ -1025,7 +1025,7 @@ public void testConsumerSortByField() throws Exception {
         SearchPhaseController.ReducedQueryPhase reduce = consumer.reduce();
         assertAggReduction(request);
         assertEquals(Math.min(expectedNumResults, size), reduce.sortedTopDocs.scoreDocs.length);
-        assertEquals(expectedNumResults, reduce.totalHits.value);
+        assertEquals(expectedNumResults, reduce.totalHits.value());
         assertEquals(max.get(), ((FieldDoc) reduce.sortedTopDocs.scoreDocs[0]).fields[0]);
         assertTrue(reduce.sortedTopDocs.isSortedByField);
         assertEquals(1, reduce.sortedTopDocs.sortFields.length);
@@ -1074,7 +1074,7 @@ public void testConsumerFieldCollapsing() throws Exception {
         SearchPhaseController.ReducedQueryPhase reduce = consumer.reduce();
         assertAggReduction(request);
         assertEquals(3, reduce.sortedTopDocs.scoreDocs.length);
-        assertEquals(expectedNumResults, reduce.totalHits.value);
+        assertEquals(expectedNumResults, reduce.totalHits.value());
         assertEquals(a, ((FieldDoc) reduce.sortedTopDocs.scoreDocs[0]).fields[0]);
         assertEquals(b, ((FieldDoc) reduce.sortedTopDocs.scoreDocs[1]).fields[0]);
         assertEquals(c, ((FieldDoc) reduce.sortedTopDocs.scoreDocs[2]).fields[0]);
@@ -1186,7 +1186,7 @@ public void testConsumerSuggestions() throws Exception {
         assertEquals(maxScoreCompletion, reduce.sortedTopDocs.scoreDocs[0].score, 0f);
         assertEquals(0, reduce.sortedTopDocs.scoreDocs[0].doc);
         assertNotEquals(-1, reduce.sortedTopDocs.scoreDocs[0].shardIndex);
-        assertEquals(0, reduce.totalHits.value);
+        assertEquals(0, reduce.totalHits.value());
         assertFalse(reduce.sortedTopDocs.isSortedByField);
         assertNull(reduce.sortedTopDocs.sortFields);
         assertNull(reduce.sortedTopDocs.collapseField);
@@ -1277,7 +1277,7 @@ public void onFinalReduce(List<SearchShard> shards, TotalHits totalHits, Interna
             assertEquals(max.get(), internalMax.getValue(), 0.0D);
             assertEquals(1, reduce.sortedTopDocs.scoreDocs.length);
             assertEquals(max.get(), reduce.maxScore, 0.0f);
-            assertEquals(expectedNumResults, reduce.totalHits.value);
+            assertEquals(expectedNumResults, reduce.totalHits.value());
             assertEquals(max.get(), reduce.sortedTopDocs.scoreDocs[0].score, 0.0f);
             assertFalse(reduce.sortedTopDocs.isSortedByField);
             assertNull(reduce.sortedTopDocs.sortFields);
diff --git a/server/src/test/java/org/opensearch/action/search/SearchQueryThenFetchAsyncActionTests.java b/server/src/test/java/org/opensearch/action/search/SearchQueryThenFetchAsyncActionTests.java
index f6a06a51c7b43..1ccbbf4196505 100644
--- a/server/src/test/java/org/opensearch/action/search/SearchQueryThenFetchAsyncActionTests.java
+++ b/server/src/test/java/org/opensearch/action/search/SearchQueryThenFetchAsyncActionTests.java
@@ -274,11 +274,11 @@ public void run() {
         SearchPhaseController.ReducedQueryPhase phase = action.results.reduce();
         assertThat(phase.numReducePhases, greaterThanOrEqualTo(1));
         if (withScroll) {
-            assertThat(phase.totalHits.value, equalTo((long) numShards));
-            assertThat(phase.totalHits.relation, equalTo(TotalHits.Relation.EQUAL_TO));
+            assertThat(phase.totalHits.value(), equalTo((long) numShards));
+            assertThat(phase.totalHits.relation(), equalTo(TotalHits.Relation.EQUAL_TO));
         } else {
-            assertThat(phase.totalHits.value, equalTo(2L));
-            assertThat(phase.totalHits.relation, equalTo(TotalHits.Relation.GREATER_THAN_OR_EQUAL_TO));
+            assertThat(phase.totalHits.value(), equalTo(2L));
+            assertThat(phase.totalHits.relation(), equalTo(TotalHits.Relation.GREATER_THAN_OR_EQUAL_TO));
         }
         assertThat(phase.sortedTopDocs.scoreDocs.length, equalTo(1));
         assertThat(phase.sortedTopDocs.scoreDocs[0], instanceOf(FieldDoc.class));
diff --git a/server/src/test/java/org/opensearch/action/search/SearchResponseMergerTests.java b/server/src/test/java/org/opensearch/action/search/SearchResponseMergerTests.java
index 0eefa413c1864..e93f4553063ac 100644
--- a/server/src/test/java/org/opensearch/action/search/SearchResponseMergerTests.java
+++ b/server/src/test/java/org/opensearch/action/search/SearchResponseMergerTests.java
@@ -665,11 +665,11 @@ public void testMergeSearchHits() throws InterruptedException {
             TotalHits totalHits = null;
             if (trackTotalHitsUpTo != SearchContext.TRACK_TOTAL_HITS_DISABLED) {
                 totalHits = new TotalHits(randomLongBetween(0, 1000), totalHitsRelation);
-                long previousValue = expectedTotalHits == null ? 0 : expectedTotalHits.value;
-                expectedTotalHits = new TotalHits(Math.min(previousValue + totalHits.value, trackTotalHitsUpTo), totalHitsRelation);
+                long previousValue = expectedTotalHits == null ? 0 : expectedTotalHits.value();
+                expectedTotalHits = new TotalHits(Math.min(previousValue + totalHits.value(), trackTotalHitsUpTo), totalHitsRelation);
             }
 
-            final int numDocs = totalHits == null || totalHits.value >= requestedSize ? requestedSize : (int) totalHits.value;
+            final int numDocs = totalHits == null || totalHits.value() >= requestedSize ? requestedSize : (int) totalHits.value();
             int scoreFactor = randomIntBetween(1, numResponses);
             float maxScore = scoreSort ? numDocs * scoreFactor : Float.NaN;
             SearchHit[] hits = randomSearchHitArray(
@@ -771,8 +771,8 @@ public void testMergeSearchHits() throws InterruptedException {
             assertNull(searchHits.getTotalHits());
         } else {
             assertNotNull(searchHits.getTotalHits());
-            assertEquals(expectedTotalHits.value, searchHits.getTotalHits().value);
-            assertSame(expectedTotalHits.relation, searchHits.getTotalHits().relation);
+            assertEquals(expectedTotalHits.value(), searchHits.getTotalHits().value());
+            assertSame(expectedTotalHits.relation(), searchHits.getTotalHits().relation());
         }
         if (expectedMaxScore == Float.NEGATIVE_INFINITY) {
             assertTrue(Float.isNaN(searchHits.getMaxScore()));
@@ -821,9 +821,9 @@ public void testMergeNoResponsesAdded() {
         assertEquals(0, response.getNumReducePhases());
         assertFalse(response.isTimedOut());
         assertNotNull(response.getHits().getTotalHits());
-        assertEquals(0, response.getHits().getTotalHits().value);
+        assertEquals(0, response.getHits().getTotalHits().value());
         assertEquals(0, response.getHits().getHits().length);
-        assertEquals(TotalHits.Relation.EQUAL_TO, response.getHits().getTotalHits().relation);
+        assertEquals(TotalHits.Relation.EQUAL_TO, response.getHits().getTotalHits().relation());
         assertNull(response.getScrollId());
         assertSame(InternalAggregations.EMPTY, response.getAggregations());
         assertNull(response.getSuggest());
@@ -892,7 +892,7 @@ public void testMergeEmptySearchHitsWithNonEmpty() {
                 () -> null
             )
         );
-        assertEquals(10, mergedResponse.getHits().getTotalHits().value);
+        assertEquals(10, mergedResponse.getHits().getTotalHits().value());
         assertEquals(10, mergedResponse.getHits().getHits().length);
         assertEquals(2, mergedResponse.getTotalShards());
         assertEquals(2, mergedResponse.getSuccessfulShards());
@@ -916,8 +916,8 @@ public void testMergeOnlyEmptyHits() {
             TotalHits totalHits = null;
             if (trackTotalHitsUpTo != SearchContext.TRACK_TOTAL_HITS_DISABLED) {
                 totalHits = new TotalHits(randomLongBetween(0, 1000), totalHitsRelation);
-                long previousValue = expectedTotalHits == null ? 0 : expectedTotalHits.value;
-                expectedTotalHits = new TotalHits(Math.min(previousValue + totalHits.value, trackTotalHitsUpTo), totalHitsRelation);
+                long previousValue = expectedTotalHits == null ? 0 : expectedTotalHits.value();
+                expectedTotalHits = new TotalHits(Math.min(previousValue + totalHits.value(), trackTotalHitsUpTo), totalHitsRelation);
             }
             SearchHits empty = new SearchHits(new SearchHit[0], totalHits, Float.NaN, null, null, null);
             InternalSearchResponse response = new InternalSearchResponse(empty, null, null, null, false, false, 1);
diff --git a/server/src/test/java/org/opensearch/action/search/SearchResponseTests.java b/server/src/test/java/org/opensearch/action/search/SearchResponseTests.java
index c9e59ab4ea04d..f5a53be43f267 100644
--- a/server/src/test/java/org/opensearch/action/search/SearchResponseTests.java
+++ b/server/src/test/java/org/opensearch/action/search/SearchResponseTests.java
@@ -434,8 +434,8 @@ public void testSerialization() throws IOException {
         if (searchResponse.getHits().getTotalHits() == null) {
             assertNull(deserialized.getHits().getTotalHits());
         } else {
-            assertEquals(searchResponse.getHits().getTotalHits().value, deserialized.getHits().getTotalHits().value);
-            assertEquals(searchResponse.getHits().getTotalHits().relation, deserialized.getHits().getTotalHits().relation);
+            assertEquals(searchResponse.getHits().getTotalHits().value(), deserialized.getHits().getTotalHits().value());
+            assertEquals(searchResponse.getHits().getTotalHits().relation(), deserialized.getHits().getTotalHits().relation());
         }
         assertEquals(searchResponse.getHits().getHits().length, deserialized.getHits().getHits().length);
         assertEquals(searchResponse.getNumReducePhases(), deserialized.getNumReducePhases());
@@ -452,8 +452,8 @@ public void testSerializationWithSearchExtBuilders() throws IOException {
         if (searchResponse.getHits().getTotalHits() == null) {
             assertNull(deserialized.getHits().getTotalHits());
         } else {
-            assertEquals(searchResponse.getHits().getTotalHits().value, deserialized.getHits().getTotalHits().value);
-            assertEquals(searchResponse.getHits().getTotalHits().relation, deserialized.getHits().getTotalHits().relation);
+            assertEquals(searchResponse.getHits().getTotalHits().value(), deserialized.getHits().getTotalHits().value());
+            assertEquals(searchResponse.getHits().getTotalHits().relation(), deserialized.getHits().getTotalHits().relation());
         }
         assertEquals(searchResponse.getHits().getHits().length, deserialized.getHits().getHits().length);
         assertEquals(searchResponse.getNumReducePhases(), deserialized.getNumReducePhases());
@@ -474,8 +474,8 @@ public void testSerializationWithSearchExtBuildersOnUnsupportedWriterVersion() t
         if (searchResponse.getHits().getTotalHits() == null) {
             assertNull(deserialized.getHits().getTotalHits());
         } else {
-            assertEquals(searchResponse.getHits().getTotalHits().value, deserialized.getHits().getTotalHits().value);
-            assertEquals(searchResponse.getHits().getTotalHits().relation, deserialized.getHits().getTotalHits().relation);
+            assertEquals(searchResponse.getHits().getTotalHits().value(), deserialized.getHits().getTotalHits().value());
+            assertEquals(searchResponse.getHits().getTotalHits().relation(), deserialized.getHits().getTotalHits().relation());
         }
         assertEquals(searchResponse.getHits().getHits().length, deserialized.getHits().getHits().length);
         assertEquals(searchResponse.getNumReducePhases(), deserialized.getNumReducePhases());
diff --git a/server/src/test/java/org/opensearch/indices/IndicesQueryCacheTests.java b/server/src/test/java/org/opensearch/indices/IndicesQueryCacheTests.java
index ba40343fb2130..7aa07a4bdb9c6 100644
--- a/server/src/test/java/org/opensearch/indices/IndicesQueryCacheTests.java
+++ b/server/src/test/java/org/opensearch/indices/IndicesQueryCacheTests.java
@@ -91,10 +91,10 @@ public String toString(String field) {
 
         @Override
         public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) throws IOException {
-            return new ConstantScoreWeight(this, boost) {
+            return new ConstantScoreWeight(boost) {
                 @Override
                 public Scorer scorer(LeafReaderContext context) throws IOException {
-                    return new ConstantScoreScorer(this, score(), scoreMode, DocIdSetIterator.all(context.reader().maxDoc()));
+                    return new ConstantScoreScorer(score(), scoreMode, DocIdSetIterator.all(context.reader().maxDoc()));
                 }
 
                 @Override
diff --git a/test/framework/src/main/java/org/opensearch/test/OpenSearchIntegTestCase.java b/test/framework/src/main/java/org/opensearch/test/OpenSearchIntegTestCase.java
index e27ff311c06f6..7a6050fe158ee 100644
--- a/test/framework/src/main/java/org/opensearch/test/OpenSearchIntegTestCase.java
+++ b/test/framework/src/main/java/org/opensearch/test/OpenSearchIntegTestCase.java
@@ -844,7 +844,7 @@ public void waitNoPendingTasksOnAll() throws Exception {
     /** Ensures the result counts are as expected, and logs the results if different */
     public void assertResultsAndLogOnFailure(long expectedResults, SearchResponse searchResponse) {
         final TotalHits totalHits = searchResponse.getHits().getTotalHits();
-        if (totalHits.value != expectedResults || totalHits.relation != TotalHits.Relation.EQUAL_TO) {
+        if (totalHits.value() != expectedResults || totalHits.relation() != TotalHits.Relation.EQUAL_TO) {
             StringBuilder sb = new StringBuilder("search result contains [");
             String value = Long.toString(totalHits.value) + (totalHits.relation == TotalHits.Relation.GREATER_THAN_OR_EQUAL_TO ? "+" : "");
             sb.append(value).append("] results. expected [").append(expectedResults).append("]");