首页 > 解决方案 > 尝试为定义的 Elasticsearch 模板中缺少的字段建立索引

问题描述

我找不到有关以下问题的任何文档:

我们正在为我们要索引到 Elasticsearch 的所有字段创建一个模板文件。问题是关于模板中未定义的字段:

  1. 它们作为索引的默认 Elastic 值是多少?
  2. 索引这些字段有什么限制(如果有的话)?
  3. 我试图索引一个字段,它的值是 JSON 列表,但出现异常:“无法在 1:311 的 START_OBJECT 上获取文本”,这是什么意思?

标签: elasticsearchindexingmapping

解决方案


  1. 字符串字段使用带有标准分析器的文本字段和带有关键字数据类型的子字段 .keyword 进行索引,其中选项 ignore_above 设置为 256。尝试将日期字段解析为 iso 8601 格式 - 这个yyyy-MM-dd HH:mm:ss。long 是数字的默认值,double 是小数的默认值。您可以使用动态模板修改此默认行为。例如,如果我们想将所有整数字段映射为 short 而不是 long,并将所有字符串字段映射为关键字,我们可以使用以下模板:

    PUT my_index { "mappings": { "dynamic_templates": [ { "integers": { "match_mapping_type": "long", "mapping": { "type": "short" } } }, { "strings": { " match_mapping_type": "string", "mapping": { "type": "keyword", "ignore_above" :256 } } } } }

  2. 模板中未定义的索引字段没有限制

  3. 这个错误意味着 es 语法的 json 有错误,你能分享这个 json 吗?

推荐阅读