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

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


The following commit(s) were added to refs/heads/master by this push:
     new 8b40791718 [Feature](ES): catalog support mapping es _id #15943
8b40791718 is described below

commit 8b40791718011c6acd5c5e885a2e0c75492c10f2
Author: Stalary <stal...@163.com>
AuthorDate: Sat Jan 21 08:08:32 2023 +0800

    [Feature](ES): catalog support mapping es _id #15943
---
 .../src/main/java/org/apache/doris/catalog/EsResource.java |  5 +++++
 .../src/main/java/org/apache/doris/catalog/EsTable.java    |  2 +-
 .../org/apache/doris/datasource/EsExternalCatalog.java     | 13 ++++++-------
 .../org/apache/doris/external/elasticsearch/EsUtil.java    | 14 +++++++++++++-
 4 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/EsResource.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/EsResource.java
index 1b9d5863d0..012ad119e3 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/EsResource.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/EsResource.java
@@ -59,12 +59,14 @@ public class EsResource extends Resource {
     public static final String MAX_DOCVALUE_FIELDS = "max_docvalue_fields";
     public static final String NODES_DISCOVERY = "nodes_discovery";
     public static final String HTTP_SSL_ENABLED = "http_ssl_enabled";
+    public static final String MAPPING_ES_ID = "mapping_es_id";
     public static final String QUERY_DSL = "query_dsl";
 
     public static final String DOC_VALUE_SCAN_DEFAULT_VALUE = "true";
     public static final String KEYWORD_SNIFF_DEFAULT_VALUE = "true";
     public static final String HTTP_SSL_ENABLED_DEFAULT_VALUE = "false";
     public static final String NODES_DISCOVERY_DEFAULT_VALUE = "true";
+    public static final String MAPPING_ES_ID_DEFAULT_VALUE = "false";
     @SerializedName(value = "properties")
     private Map<String, String> properties;
 
@@ -122,6 +124,9 @@ public class EsResource extends Resource {
         if (properties.containsKey(EsResource.NODES_DISCOVERY)) {
             EsUtil.getBoolean(properties, EsResource.NODES_DISCOVERY);
         }
+        if (properties.containsKey(EsResource.MAPPING_ES_ID)) {
+            EsUtil.getBoolean(properties, EsResource.MAPPING_ES_ID);
+        }
     }
 
     private Map<String, String> processCompatibleProperties(Map<String, 
String> props) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/EsTable.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/EsTable.java
index 0c89a3b0d6..a26a7db7f9 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/EsTable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/EsTable.java
@@ -306,6 +306,6 @@ public class EsTable extends Table {
     }
 
     public List<Column> genColumnsFromEs() {
-        return EsUtil.genColumnsFromEs(client, indexName, mappingType);
+        return EsUtil.genColumnsFromEs(client, indexName, mappingType, false);
     }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/EsExternalCatalog.java 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/EsExternalCatalog.java
index f3441e0c9f..9b219ea6a2 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/EsExternalCatalog.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/EsExternalCatalog.java
@@ -67,12 +67,6 @@ public class EsExternalCatalog extends ExternalCatalog {
         if (properties.containsKey("username")) {
             properties.put(EsResource.USER, properties.remove("username"));
         }
-        if (properties.containsKey("doc_value_scan")) {
-            properties.put(EsResource.DOC_VALUE_SCAN, 
properties.remove("doc_value_scan"));
-        }
-        if (properties.containsKey("keyword_sniff")) {
-            properties.put(EsResource.KEYWORD_SNIFF, 
properties.remove("keyword_sniff"));
-        }
         return properties;
     }
 
@@ -109,6 +103,11 @@ public class EsExternalCatalog extends ExternalCatalog {
                 EsResource.NODES_DISCOVERY_DEFAULT_VALUE));
     }
 
+    public boolean enableMappingEsId() {
+        return 
Boolean.parseBoolean(catalogProperty.getOrDefault(EsResource.MAPPING_ES_ID,
+                EsResource.MAPPING_ES_ID_DEFAULT_VALUE));
+    }
+
     @Override
     protected void initLocalObjectsImpl() {
         esRestClient = new EsRestClient(getNodes(), getUsername(), 
getPassword(), enableSsl());
@@ -161,6 +160,6 @@ public class EsExternalCatalog extends ExternalCatalog {
     @Override
     public List<Column> getSchema(String dbName, String tblName) {
         makeSureInitialized();
-        return EsUtil.genColumnsFromEs(getEsRestClient(), tblName, null);
+        return EsUtil.genColumnsFromEs(getEsRestClient(), tblName, null, 
enableMappingEsId());
     }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/external/elasticsearch/EsUtil.java 
b/fe/fe-core/src/main/java/org/apache/doris/external/elasticsearch/EsUtil.java
index 0cde72067d..10c9a675c2 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/external/elasticsearch/EsUtil.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/external/elasticsearch/EsUtil.java
@@ -189,6 +189,7 @@ public class EsUtil {
 
     /**
      * Remove `dynamic_templates` and check explicit mapping
+     *
      * @param mappings
      */
     private static void checkDynamicTemplates(JSONObject mappings) {
@@ -376,13 +377,24 @@ public class EsUtil {
 
     /**
      * Generate columns from ES Cluster.
+     * Add mappingEsId config in es external catalog.
      **/
-    public static List<Column> genColumnsFromEs(EsRestClient client, String 
indexName, String mappingType) {
+    public static List<Column> genColumnsFromEs(EsRestClient client, String 
indexName, String mappingType,
+            boolean mappingEsId) {
         String mapping = client.getMapping(indexName);
         JSONObject mappingProps = getMappingProps(indexName, mapping, 
mappingType);
         List<String> arrayFields = getArrayFields(mapping);
         Set<String> keys = (Set<String>) mappingProps.keySet();
         List<Column> columns = new ArrayList<>();
+        if (mappingEsId) {
+            Column column = new Column();
+            column.setName("_id");
+            column.setIsKey(true);
+            column.setType(ScalarType.createVarcharType(255));
+            column.setIsAllowNull(true);
+            column.setUniqueId(-1);
+            columns.add(column);
+        }
         for (String key : keys) {
             JSONObject field = (JSONObject) mappingProps.get(key);
             Type type;


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

Reply via email to