【问题标题】:How to create a custom reusable type in ElasticSearch?如何在 ElasticSearch 中创建自定义可重用类型?
【发布时间】:2021-06-28 04:22:18
【问题描述】:

我的 ElasticSearch 模式的 json 看起来像这样:-

{
  "mappings": {
    "properties": {
      "DESCRIPTION_FR": {
        "type": "text",
        "analyzer": "french"
      },
      "FEEDBACK_FR": {
        "type": "text",
        "analyzer": "french"
      },
      "SOURCE_FR": {
        "type": "text",
        "analyzer": "french"
      }
    }
  }
}

有 100 个这样的属性。使用这种方法复制所有属性的更改是多余且错误的。

ElasticSearch 7.2 中有没有办法编写自定义数据类型并在属性映射中重用它。

{
  "settings": {
  //definition of custom type "text_fr"
 },
  "mappings": {
    "properties": {
      "DESCRIPTION_FR": {
        "type": "text_fr"
      },
      "FEEDBACK_FR": {
        "type": "text_fr"
      },
      "SOURCE_FR": {
        "type": "text_fr"
      }
    }
  }
}

【问题讨论】:

    标签: elasticsearch aws-elasticsearch elasticsearch-mapping elasticsearch-schema


    【解决方案1】:

    是的!你所追求的是dynamic mapping templates。更具体地说,match feature

    1. 使用前导通配符定义目标字段名称:
    PUT my_index
    {
      "mappings": {
        "dynamic_templates": [
          {
            "is_french_text": {
              "match_mapping_type": "*",
              "match": "*_FR",
              "mapping": {
                "type": "text",
                "analyzer": "french"
              }
            }
          }
        ]
      }
    }
    
    1. 插入文档:
    POST my_index/_doc
    {
      "DESCRIPTION_FR": "je",
      "FEEDBACK_FR": "oui",
      "SOURCE_FR": "je ne sais quoi"
    }
    
    1. 验证动态生成的映射:
    GET my_index/_mapping
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      • 2012-08-21
      • 2011-06-23
      • 2015-12-11
      • 2021-10-27
      • 2014-03-25
      相关资源
      最近更新 更多