diff --git a/src/main/java/org/opensearch/security/configuration/DlsFlsFilterLeafReader.java b/src/main/java/org/opensearch/security/configuration/DlsFlsFilterLeafReader.java index aa3e007bc2..92156dc0cc 100644 --- a/src/main/java/org/opensearch/security/configuration/DlsFlsFilterLeafReader.java +++ b/src/main/java/org/opensearch/security/configuration/DlsFlsFilterLeafReader.java @@ -74,7 +74,6 @@ class DlsFlsFilterLeafReader extends SequentialStoredFieldsLeafReader { - private static final String KEYWORD = ".keyword"; private final FieldInfos flsFieldInfos; private final IndexService indexService; private final ThreadContext threadContext; @@ -822,6 +821,11 @@ public void seekExact(long ord) throws IOException { public long ord() throws IOException { throw new UnsupportedOperationException(); } + + @Override + public IOBooleanSupplier prepareSeekExact(BytesRef text) throws IOException { + return isAllowed(text) ? in.prepareSeekExact(text) : () -> false; + } } private final class FilteredTerms extends FilterTerms { diff --git a/src/test/java/org/opensearch/security/dlic/dlsfls/FlsExistsFieldsTest.java b/src/test/java/org/opensearch/security/dlic/dlsfls/FlsExistsFieldsTest.java index d509d9a55f..18fb3ed012 100644 --- a/src/test/java/org/opensearch/security/dlic/dlsfls/FlsExistsFieldsTest.java +++ b/src/test/java/org/opensearch/security/dlic/dlsfls/FlsExistsFieldsTest.java @@ -38,11 +38,11 @@ protected void populateData(Client tc) { "@timestamp", "type=date", "host", - "type=text,doc_values=false,norms=true", + "type=text,norms=false", "response", - "type=text,doc_values=false,norms=true", + "type=text,norms=false", "non-existing", - "type=text,doc_values=false,norms=true" + "type=text,norms=false" ) ) .actionGet();