ruby-on-rails - Elasticsearch 和轮胎 : Using Mapping and to_indexed_json

标签 ruby-on-rails ruby elasticsearch tire

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

问题是,我发现一些教程同时使用了这两种方法。为什么?

基本上,我的应用程序现在可以使用 to_indexed_json 但我无法弄清楚如何设置某些属性的提升值(因此我开始查看映射的原因)并且我想知道同时使用两者是否会造成一些冲突。

最佳答案

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

mapping 方法的目的是为索引中的文档属性定义映射。您可能希望将某些属性定义为“not_analyzed”,这样它就不会被分解成标记,或者为该属性设置特定的分析器,或者(正如您提到的)索引时间提升 因素。您还可以定义多字段 属性、日期 类型的自定义格式等。

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

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

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

现在,当您想要为 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 方法来定义搜索引擎如何查看您的文档/模型。

关于ruby-on-rails - Elasticsearch 和轮胎 : Using Mapping and to_indexed_json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11672072/

相关文章:

ruby-on-rails - Rails 单元测试中的日期时间问题

ruby - 循环多个条件直到全部满足

plugins - kibana-4.3如何开发插件

mysql - 如何在 elasticsearch 中编写此查询?

ruby-on-rails - 在方法中使用 form_for 的 Draper

elasticsearch - Couchbase Elasticsearch插件在推送之前转换数据

ruby-on-rails - rake 数据库 :seed generates ArgumentError: missing keywords: from, 到

ruby-on-rails - Heroku 共享数据库与 Amazon RDS 性能对比

ruby-on-rails - 为什么这个局部变量声明不起作用?

ruby-on-rails - ruby on Rails 中不可编辑的文本字段