我正在使用搜索API,现在需要添加completion suggester,我正在使用elasticsearch-rails gem。
当我搜索文章时,一切正常
http://localhost:9200/articles/_search
"query": {
"multi_match": {
"query": "test",
"fields": [
"title", "tags", "content"
]
}
}
}
但是,由于我已经实现了完成建议程序,因此我不得不编辑
as_indexed_json
使其起作用,但是现在搜索API不再起作用,仅起作用。这是我的文章模型:
def self.search(query)
__elasticsearch__.search(
{
query: {
multi_match: {
query: query,
fields: ['title', 'content', 'tags']
}
}
})
end
def self.suggest(query)
Article.__elasticsearch__.client.suggest(:index => Article.index_name, :body => {
:suggestions => {
:text => query,
:completion => {
:field => 'suggest'
}
}
})
end
def as_indexed_json(options={})
{
:name => self.title,
:suggest => {
:input => self.title,
:output => self.title,
:payload => {
:content => self.content,
:tags => self.tags,
:title => self.title
}
}
}.as_json
end
_search和_suggest是否可以与同一模型一起工作?
最佳答案
我只是在研究Elasticsearch,但是据我所知,您可以添加您在序列化器函数中进行修改并重新创建索引之前所拥有的内容,它们将在db中很好地结合在一起。例如:
def as_indexed_json(options={})
{
:name => self.title,
:suggest => {
:input => self.title,
:output => self.title,
:payload => {
:content => self.content,
:tags => self.tags,
:title => self.title
}
}
}.as_json.merge(self.as_json) # or the customized hash you used
为了避免索引冗余,您可以查看aliases and routing。
关于ruby-on-rails - rails-Elasticsearch完成建议和搜索API,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28884673/