【问题标题】:In elasticsearch mappings, what does the "index" attribute do for non-string types?在 elasticsearch 映射中,“index”属性对非字符串类型有什么作用?
【发布时间】:2014-09-08 14:52:55
【问题描述】:

在弹性搜索映射中,字符串的“索引”属性决定了字符串是否会被分解为标记并进行分析。设置“index”属性对非字符串类型(如整数、浮点数、日期等)有什么作用?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您可以将“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

    【讨论】:

      【解决方案2】:

      字符串类型的“索引”属性(来自es reference):

      设置为分析后被索引和可搜索的字段 使用分析器分解为令牌。 not_analyzed 意味着它的 仍可搜索,但未经过任何分析过程或 分解成代币。 no 意味着它根本不可搜索 (作为一个单独的字段;它可能仍包含在 _all 中)。设置为 no 禁用 include_in_all。默认为已分析。

      对于其他类型:

      如果值不应被索引,则设置为 no。设置为 no 会禁用 include_in_all。如果设置为 no,则该字段应存储在 _source 中,启用 include_in_all,或者将 store 设置为 true 以使其有用。

      【讨论】:

        【解决方案3】:

        对于非字符串值,它会禁用对该值的索引并禁用include_in_all。这意味着您将无法在搜索中使用该字段。

        该值仍将被存储,因此您可以指定要在搜索请求中返回的字段

        {... "fields" : ["name", "age"] ...}
        

        您可以读取该值并在您的应用中使用它。 (如果你不从_source 中排除它,它也会存储在那里)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-09-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多