我正在尝试在rails应用程序中使用Elastic Search。我有一个名为“comments”的表,以下查询正确搜索多个单词:
def self.search(query, id)
#puts id
#puts query
__elasticsearch__.search(
{
query: {
multi_match: {
query: query,
#query: { query: {
# query: "*query* and thread_id:id"
#}},
fields: ['title^10', 'body']
}
}
}
)
end
在表格中我有另一列“thread_id”,我想将我已经拥有的搜索限制为特定的thread_id。
我已经尝试了注释掉的代码(见上文),但我显然遗漏了ES选择中的基本内容。
我认为我的评论索引不包括thread_id或语法错误。
任何帮助都将不胜感激。
答案 0 :(得分:0)
从ES ver 2.x开始,您需要使用filter子句进行bool查询。在2.x之前,您需要使用过滤查询:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html
答案 1 :(得分:0)
所以,对于那些需要这种语法的人来说,这就是答案(至少这对我有用):
def self.search(q, id = nil)
__elasticsearch__.search(
{
query: {
multi_match: {
query: q,
fields: [ "title^10", "body" ]
}
},
filter: {
term: {thread_id: id}
}
}
)
end