From a77b38cdd1604dfa539bac36ce5a3f79f9f955a1 Mon Sep 17 00:00:00 2001 From: Masaru Hasegawa Date: Wed, 31 May 2017 18:35:01 +0900 Subject: Fix context suggester to read values from keyword type field (#24200) Closes #24129 --- .../suggest/completion/context/CategoryContextMapping.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'core/src/main/java/org/elasticsearch/search/suggest/completion/context/CategoryContextMapping.java') diff --git a/core/src/main/java/org/elasticsearch/search/suggest/completion/context/CategoryContextMapping.java b/core/src/main/java/org/elasticsearch/search/suggest/completion/context/CategoryContextMapping.java index 38e31ec92a..92091d8b69 100644 --- a/core/src/main/java/org/elasticsearch/search/suggest/completion/context/CategoryContextMapping.java +++ b/core/src/main/java/org/elasticsearch/search/suggest/completion/context/CategoryContextMapping.java @@ -25,6 +25,7 @@ import org.elasticsearch.Version; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.XContentParser.Token; +import org.elasticsearch.index.mapper.KeywordFieldMapper; import org.elasticsearch.index.mapper.ParseContext; import org.elasticsearch.index.mapper.ParseContext.Document; import org.elasticsearch.index.query.QueryParseContext; @@ -136,10 +137,14 @@ public class CategoryContextMapping extends ContextMapping IndexableField[] fields = document.getFields(fieldName); values = new HashSet<>(fields.length); for (IndexableField field : fields) { - values.add(field.stringValue()); + if (field.fieldType() instanceof KeywordFieldMapper.KeywordFieldType) { + values.add(field.binaryValue().utf8ToString()); + } else { + values.add(field.stringValue()); + } } } - return (values == null) ? Collections.emptySet() : values; + return (values == null) ? Collections.emptySet() : values; } @Override -- cgit v1.2.3