elasticsearch,tire,Ruby On Rails,elasticsearch,Tire" /> elasticsearch,tire,Ruby On Rails,elasticsearch,Tire" />

Ruby on rails 带弹性搜索和轮胎的柔性模型

Ruby on rails 带弹性搜索和轮胎的柔性模型,ruby-on-rails,elasticsearch,tire,Ruby On Rails,elasticsearch,Tire,在Rails应用程序中,我希望能够存储无模式的对象——JSON数据结构,在不同的对象之间,或者在不同的时间,相同的对象可以具有不同的结构 使用ElasticSearch,我可以做到这一点。然而,我想使用某种ORM和Rails来实现这一点 尝试使用轮胎教程进行一些测试,在Rails控制台中执行此操作: >>> c = Article.new :title =>'New article', :content => { :a => 'a', :b => 'b'

在Rails应用程序中,我希望能够存储无模式的对象——JSON数据结构,在不同的对象之间,或者在不同的时间,相同的对象可以具有不同的结构

使用ElasticSearch,我可以做到这一点。然而,我想使用某种ORM和Rails来实现这一点

尝试使用轮胎教程进行一些测试,在Rails控制台中执行此操作:

>>> c = Article.new :title =>'New article', :content => { :a => 'a', :b => 'b'}
我可以看到存储为序列化YAML的内容数据:

>> Article.last.content
=> "---\n:a: a\n:b: b\n"
这需要将搜索结果解析为JSON,这不是问题。但主要问题是:我能在序列化数据中搜索吗?有没有一种方法可以从任意结构化数据(如Object.keys)返回属性名


如果不是Tire,还有其他解决方案可以做到这一点吗?

不太清楚您在这里做了什么,但Tire确实提供了一个替代ActiveRecord集成的插件,只需
在类中包括Tire::Model::Persistence
。您还可以定义属性(使用映射、类型转换、默认值等):

轮胎自述和所有信息

当然,您可以在
content
属性中进行搜索——这只是正确映射的问题


如果您想要了解某些特定的行为,请更新您的问题…

这似乎是NoSQL的好用途,请尝试CouchDB或Mongo。它将更灵活,而不是黑客SQL。好吧,ElasticSearch是NoSQL…@rado:使用ElasticSearch来达到上述目的是绝对合法的。此外,原作者从未声明过“黑客SQL”的意图,从他发布的代码中也看不出这一点。@Dmytro i不支持ElasticSearch。但如果您想要无模式的对象,NoSQL更可取,因为整个数据都是序列化的,您可以搜索所有属性。@karmi很抱歉我的回答不确定,我知道这是合理的。我只想回答nosql在这个问题上会更实用。好吧,看来我需要的是持久性。你应该一直读自述文件到底:)那么答案至少应该准确地接受它吗?
class Article

  include Tire::Model::Persistence

  property :title
  property :published_on, type: 'date'
  property :tags,         analyzer: 'keyword', default: []

end