Skip to content

Commit dacaa7d

Browse files
committed
Adding yml test for keyword fields with doc_values enabled
Signed-off-by: Harsha Vamsi Kalluri <[email protected]>
1 parent 29f79fe commit dacaa7d

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
"search on keyword fields with doc_values enabled":
3+
- do:
4+
indices.create:
5+
index: test
6+
body:
7+
mappings:
8+
properties:
9+
"some_keyword":
10+
type: "keyword"
11+
index: true
12+
doc_values: true
13+
14+
- do:
15+
bulk:
16+
index: test
17+
refresh: true
18+
body:
19+
- '{"index": {"_index": "test", "_id": "1" }}'
20+
- '{ "some_keyword": "ingesting some random keyword data" }'
21+
- '{ "index": { "_index": "test", "_id": "2" }}'
22+
- '{ "some_keyword": "400" }'
23+
- '{ "index": { "_index": "test", "_id": "3" } }'
24+
- '{ "some_keyword": "5" }'
25+
26+
- do:
27+
search:
28+
index: test
29+
body:
30+
query:
31+
prefix:
32+
some_keyword: "ing"
33+
34+
- match: { hits.hits.0._source.some_keyword: "ingesting some random keyword data" }
35+
36+
- do:
37+
search:
38+
index: test
39+
body:
40+
query:
41+
range: {
42+
"some_keyword": {
43+
"lt": 500
44+
} }
45+
46+
- match: { hits.total.value: 2 }

server/src/main/java/org/opensearch/index/mapper/KeywordFieldMapper.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import org.apache.lucene.search.FuzzyQuery;
4343
import org.apache.lucene.search.IndexOrDocValuesQuery;
4444
import org.apache.lucene.search.MultiTermQuery;
45+
import org.apache.lucene.search.PrefixQuery;
4546
import org.apache.lucene.search.Query;
4647
import org.apache.lucene.search.RegexpQuery;
4748
import org.apache.lucene.search.TermInSetQuery;
@@ -433,7 +434,11 @@ public Query prefixQuery(
433434
return new IndexOrDocValuesQuery(indexQuery, dvQuery);
434435
}
435436
if (hasDocValues()) {
436-
return super.prefixQuery(value, MultiTermQuery.DOC_VALUES_REWRITE, caseInsensitive, context);
437+
if (caseInsensitive) {
438+
return AutomatonQueries.caseInsensitivePrefixQuery((new Term(name(),
439+
indexedValueForSearch(value))), MultiTermQuery.DOC_VALUES_REWRITE);
440+
}
441+
return new PrefixQuery(new Term(name(), indexedValueForSearch(value)), MultiTermQuery.DOC_VALUES_REWRITE);
437442
}
438443
return super.prefixQuery(value, method, caseInsensitive, context);
439444
}

0 commit comments

Comments
 (0)