![](/img/trans.png)
[英]reloading tire/elasticsearch mappings for a model that already has data stored
[英]Flexible model with Elasticsearch and Tire
在Rails应用程序中,我希望能够存储无模式的对象-JSON数据结构,对象与对象之间的结构可能不同,或者同一对象在不同时间可能具有不同的结构。
使用ElasticSearch,我可以做到这一点。 但是我想为此使用某种ORM与Rails。
尝试使用Tire教程进行一些测试,在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)中返回属性名称?
如果不是Tyre,还有其他解决方案吗?
不太确定您要做什么,但是Tire确实提供了ActiveRecord集成的直接替代品,只需在类中include Tire::Model::Persistence
。 您还可以定义属性(具有映射,类型转换,默认值等):
class Article
include Tire::Model::Persistence
property :title
property :published_on, type: 'date'
property :tags, analyzer: 'keyword', default: []
end
Tire README和集成测试包含所有信息。
当然,您可以在content
属性中进行搜索-只是适当的映射即可。
如果您要遵循某些特定的行为,请更新您的问题...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.