弹性搜索同一字段的多个Filter值



假设我必须在弹性搜索索引(ES 7.15)中过滤汽车构造器,其中字段car_maker映射到keyword,使其在汽车制造商字符串名称中具有有限数量的可能性:

{
"mappings": {
"properties": {
"car_maker": {
"type": "keyword"
}
}
}
}
GET /cars/_search
{
"query": {
"bool": {
"filter": [{
"term": {
"car_maker": "Honda"
}
}]
}
}
}

这个和匹配查询一起工作就可以了。filter将不参与分数计算。现在我想为该查询(假设是should查询)过滤更多的汽车制造商:

{
"query": {
"bool": {
"filter" : [
{"term" : { "car_maker" : "Honda"}},
{"term" : { "car_maker" : "Ferrari"}}
]
}
}
}

这是行不通的。我会有任何错误从ES查询引擎,但任何结果太。当然,总是可以将更多的过滤器应用到不同的字段,如car_makercar_color,但如何做相反的:应用更多的值(Honda,Ferrari等)到相同的过滤器字段car_maker,如在上面的例子中,没有条件的分数计算?

您可能想尝试以下过滤器查询:

{
"query" : {
"bool" : {
"filter" : {
"terms" : {
"car_maker" : ["Honda", "Ferrari"]
}
}
}
}
}

相关内容

  • 没有找到相关文章

最新更新