使用ruby elasticsearch gem,我如何查询多个参数

时间:2015-06-06 01:46:20

标签: ruby elasticsearch

我基本上想做一个搜索:

select all from index_name where tag = 'big data' and city = 'tokyo'

代码是:

require "elasticsearch"
client = Elasticsearch::Client.new log: true
client.search index: 'candidates', body:
{
  query: {

    match: {
          tags: search_term
           }
        }
}

工作正常。但是,当我改为:

match: {
          tags: search_term, city: 'Tokyo'
           }

也就是说只是添加另一个参数我得到一个错误。

我尝试过添加

filter: {
            city: 'Tokyo'
       }

也没有成功。

谢谢你们,这里有什么最好的前进方式?

1 个答案:

答案 0 :(得分:3)

您需要查看Elasticsearch query DSL。对于一个简单的" A和B"查询您只需使用bool / must query即可。用这个替换你的身体:

client.search index: 'candidates', body:
{
  query: {
    bool: {
      must: [
        {
          match: {
            tags: 'big data'
          }
        },
        {
          match: {
            city: 'tokyo'
          }
        }
      ]
    }
  }
}