diff --git a/fe/fe-core/src/main/java/org/apache/doris/external/elasticsearch/MappingPhase.java b/fe/fe-core/src/main/java/org/apache/doris/external/elasticsearch/MappingPhase.java index b6d16e2c5892d9..4b82e18f1c4fd8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/external/elasticsearch/MappingPhase.java +++ b/fe/fe-core/src/main/java/org/apache/doris/external/elasticsearch/MappingPhase.java @@ -20,6 +20,7 @@ import org.apache.doris.catalog.Column; import org.apache.doris.catalog.EsTable; +import org.apache.commons.lang3.StringUtils; import org.json.JSONObject; import java.util.Iterator; @@ -156,6 +157,9 @@ private void resolveDocValuesFields(SearchContext searchContext, JSONObject fiel } docValueField = colName; } - searchContext.docValueFieldsContext().put(colName, docValueField); + // docValueField Cannot be null + if (StringUtils.isNotEmpty(docValueField)) { + searchContext.docValueFieldsContext().put(colName, docValueField); + } } } diff --git a/fe/fe-core/src/test/java/org/apache/doris/external/elasticsearch/MappingPhaseTest.java b/fe/fe-core/src/test/java/org/apache/doris/external/elasticsearch/MappingPhaseTest.java index 9c9c5adc224e4a..d229d7c9244039 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/external/elasticsearch/MappingPhaseTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/external/elasticsearch/MappingPhaseTest.java @@ -32,6 +32,7 @@ import mockit.Injectable; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; public class MappingPhaseTest extends EsTestCase { @@ -102,4 +103,14 @@ public void testWorkFlow(@Injectable EsRestClient client) throws Exception{ assertEquals("k2", searchContext1.docValueFieldsContext().get("k2")); } -} \ No newline at end of file + + @Test + public void testMultTextFields() throws Exception { + MappingPhase mappingPhase = new MappingPhase(null); + EsTable esTableAfter7X = fakeEsTable("fake", "test", "_doc", columns); + SearchContext searchContext = new SearchContext(esTableAfter7X); + mappingPhase.resolveFields(searchContext, loadJsonFromFile("data/es/test_index_mapping_field_mult_analyzer.json")); + assertFalse(searchContext.docValueFieldsContext().containsKey("k3")); + + } +} diff --git a/fe/fe-core/src/test/resources/data/es/test_index_mapping_field_mult_analyzer.json b/fe/fe-core/src/test/resources/data/es/test_index_mapping_field_mult_analyzer.json new file mode 100644 index 00000000000000..1a002bd2db799c --- /dev/null +++ b/fe/fe-core/src/test/resources/data/es/test_index_mapping_field_mult_analyzer.json @@ -0,0 +1,23 @@ +{ + "test": { + "mappings": { + "properties": { + "k1": { + "type": "long" + }, + "k2": { + "type": "keyword" + }, + "k3": { + "type": "text", + "fields": { + "ik": { + "type": "text", + "analyzer": "ik_max_word" + } + } + } + } + } + } +}