弹性搜索 - 如何查询列?

时间:2016-04-02 20:32:24

标签: ruby-on-rails elasticsearch

我正在尝试在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或语法错误。

任何帮助都将不胜感激。

2 个答案:

答案 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