我正在尝试将搜索结果的范围缩小到任何给定类别内。我的搜索主体可用于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上通过多个条件(一个或多个)过滤结果达到相同的效果?
如果您承诺使用多个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
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句