【问题标题】:ElasticSearch & Tire: Using Mapping and to_indexed_jsonElasticSearch & Tire:使用映射和 to_indexed_json
【发布时间】:2012-07-25 04:52:55
【问题描述】:

在阅读Tire 文档时,我的印象是您应该使用mappingto_indexed_json 方法,因为(我的理解是......)mapping 用于提供to_indexed_json .

问题是,我找到了一些同时使用两者的教程。为什么?

基本上,我的应用程序现在可以与 to_indexed_json 一起使用,但我不知道如何设置某些属性的提升值(因此我开始研究映射的原因),我想知道是否同时使用两者会产生一些冲突。

【问题讨论】:

    标签: ruby-on-rails ruby elasticsearch tire


    【解决方案1】:

    虽然mappingto_indexed_json 方法是相关的,但实际上它们有两种不同的用途。

    mapping 方法的目的是为索引中的文档属性定义映射。您可能希望将某些属性定义为“not_analyzed”,因此它不会被分解为 tokens,或者为该属性设置特定的分析器,或者(正如您提到的)索引时间 boost em>因素。您还可以定义 multifield 属性、date 类型的自定义格式等。

    然后使用此 映射。当轮胎自动creates an index for your model.

    to_indexed_json 方法的目的是为您的文档/模型定义 JSON 序列化

    default to_indexed_json method 确实使用了您的映射定义,仅使用映射中定义的属性——基于如果您足够关心定义 映射,默认情况下 Tire em> 仅索引具有定义映射的属性。

    现在,当您想牢牢掌握模型实际上是如何为 elasticsearch 序列化为 JSON 时,您只需定义自己的 to_indexed_json 方法(如 README 所示)。

    这个自定义MyModel#to_indexed_method 通常不关心映射 定义,而是从头开始构建 JSON 序列化(通过利用 ActiveRecord 的 to_json,使用 JSON 构建器,例如 jbuilder,或者只是构建一个普通的旧 Hash 并调用 Hash#to_json)。

    因此,要回答您问题的最后一部分,同时使用 mappingto_indexed_json 绝对不会产生任何冲突,实际上是在 elasticsearch 中使用高级功能所必需的。

    总结一下:

    1. 您使用mapping 方法为搜索引擎定义模型的映射
    2. 您使用自定义 to_indexed_json 方法来定义搜索引擎如何查看您的文档/模型。

    【讨论】:

    • 如果我想为单个模型设置 2 个不同的索引怎么办。如何定义两个索引?
    • 目前轮胎中的单个模型不能有两个单独的索引。
    • 谢谢,非常清楚。所以to_indexed_json 方法的结果应该在搜索结果的_source 元素中?
    猜你喜欢
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多