我基本上想做一个搜索:
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'
}
也没有成功。
谢谢你们,这里有什么最好的前进方式?
答案 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'
}
}
]
}
}
}