弹性搜索索引模板可以为字段定义默认类型,并且仅允许覆盖特定字段吗?

时间:2019-04-15 19:59:00

标签: elasticsearch elasticsearch-5

我正在映射传递的文档中的所有字段,但是偶尔弹性搜索的动态字段映射类型检测会为包含纯文本的字段选择一个非常严格的类型(例如long)。这似乎是基于ES收到的包含该字段的初始文档。例如:

文档1:

{
  "a": 1,
  "b": "foo",
  "c": {
    "nested": 5.5
  }
}

文档2:

{
  "a": "plain text",
  "b": "bar",
  "c": {
    "nested": "plain text again"
  }
}

是否可以定义一个索引模板,以便默认情况下所有值都被索引为text,并且如果我明确希望这样做,则只能将其索引为其他类型?

1 个答案:

答案 0 :(得分:1)

Elasticsearch允许自定义动态映射规则。 例如,您可以定义将long映射到text的规则:

{
  "mappings": {
    "dynamic_templates": [
      {
        "long_to_text": {
          "match_mapping_type": "long",
          "mapping": {
            "type": "text"
          }
        }
      }
    ]
}

更多详细信息可以在文档中找到:https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic-templates.html