You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by wy...@apache.org on 2020/08/11 04:09:37 UTC

[incubator-doris] branch master updated: [Doris On ES][Bug-Fix] Resolve NullPointerException when multi fields with `text` type (#4300)

This is an automated email from the ASF dual-hosted git repository.

wyf pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 48f3ba3  [Doris On ES][Bug-Fix] Resolve NullPointerException when multi fields with `text` type (#4300)
48f3ba3 is described below

commit 48f3ba35ec8044c5df1acb251e0cdffc458ac583
Author: hexiang55 <he...@gmail.com>
AuthorDate: Tue Aug 11 12:09:17 2020 +0800

    [Doris On ES][Bug-Fix] Resolve NullPointerException when multi fields with `text` type (#4300)
---
 .../doris/external/elasticsearch/MappingPhase.java |  6 +++++-
 .../external/elasticsearch/MappingPhaseTest.java   | 13 +++++++++++-
 .../es/test_index_mapping_field_mult_analyzer.json | 23 ++++++++++++++++++++++
 3 files changed, 40 insertions(+), 2 deletions(-)

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 b6d16e2..4b82e18 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 @@ package org.apache.doris.external.elasticsearch;
 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 @@ public class MappingPhase implements SearchPhase {
             }
             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 9c9c5ad..d229d7c 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.Expectations;
 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 class MappingPhaseTest extends EsTestCase {
         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 0000000..1a002bd
--- /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"
+            }
+          }
+        }
+      }
+    }
+  }
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org