【发布时间】:2014-09-08 14:52:55
【问题描述】:
在弹性搜索映射中,字符串的“索引”属性决定了字符串是否会被分解为标记并进行分析。设置“index”属性对非字符串类型(如整数、浮点数、日期等)有什么作用?
【问题讨论】:
标签: elasticsearch
在弹性搜索映射中,字符串的“索引”属性决定了字符串是否会被分解为标记并进行分析。设置“index”属性对非字符串类型(如整数、浮点数、日期等)有什么作用?
【问题讨论】:
标签: elasticsearch
您可以将“index”设置为“no”以关闭按特定字段搜索的功能 - 该字段不会被索引。默认值为“not_analyzed”,它将按原样索引数据而不进行分析,以便您可以按该字段进行搜索。数字和日期不支持“已分析”:
其他简单类型 — long、double、date等 — 也接受 index 参数,但唯一相关的值是 no 和 not_analyzed, 因为他们的价值观从未被分析过。
http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/mapping-intro.html
编号和日期
索引
如果值不应被索引,则设置为 no。设置为无禁用 include_in_all。如果设置为 no,则该字段应为 存储在 _source 中,启用 include_in_all 或将 store 设置为 真正有用的。
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-core-types.html
【讨论】:
字符串类型的“索引”属性(来自es reference):
设置为分析后被索引和可搜索的字段 使用分析器分解为令牌。 not_analyzed 意味着它的 仍可搜索,但未经过任何分析过程或 分解成代币。 no 意味着它根本不可搜索 (作为一个单独的字段;它可能仍包含在 _all 中)。设置为 no 禁用 include_in_all。默认为已分析。
对于其他类型:
如果值不应被索引,则设置为 no。设置为 no 会禁用 include_in_all。如果设置为 no,则该字段应存储在 _source 中,启用 include_in_all,或者将 store 设置为 true 以使其有用。
【讨论】:
对于非字符串值,它会禁用对该值的索引并禁用include_in_all。这意味着您将无法在搜索中使用该字段。
该值仍将被存储,因此您可以指定要在搜索请求中返回的字段
{... "fields" : ["name", "age"] ...}
您可以读取该值并在您的应用中使用它。 (如果你不从_source 中排除它,它也会存储在那里)。
【讨论】: