我正在尝试将搜索结果缩小到任何给定类别。 我的搜索主体,适用于elasticsearch 2.2.0
{
"filter":{
"bool":{
"should":[
{
"match":{
"categories":"16310211"
}
},
{
"match":{
"categories":"493964"
}
}
]
}
},
"size":25,
"from":0
}
但是现在我们正在使用AWS托管服务,他们只提供1.5.6的支持。当我运行相同的代码时,我收到了一个http 400错误的请求。如何通过1.5.6?
的多个标准(一个或多个)来实现过滤结果的相同效果答案 0 :(得分:1)
如果您承诺使用多个match
个查询,则需要将它们与bool
查询结合使用。试试这个:
{
"query":{ <--- use query here instead of filter
"bool":{
"should":[
{
"match":{
"categories":"16310211"
}
},
{
"match":{
"categories":"493964"
}
}
]
}
},
"size":25,
"from":0
}
但是,通常match
查询用于进行全文搜索。看起来您的“类别”是准确的值。我建议使用term
过滤器来代替此类数据。您可以通过以下方式获得更好的体验:
{
"query":{
"filtered":{
"filter":{
"bool":{
"should":[
{ "term":{"categories":"16310211"} },
{ "term":{"categories":"493964"} }
]
}
}
}
},
"size":25,
"from":0
}