假设我必须在 Elastic Search Index (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_maker
和 car_color
,但如何做相反的事情:将更多值( Honda
、 Ferrari
等)应用于相同的过滤器字段 car_maker
像上面的例子一样,没有调节分数计算?
最佳答案
您可能想尝试以下过滤器查询:
{
"query" : {
"bool" : {
"filter" : {
"terms" : {
"car_maker" : ["Honda", "Ferrari"]
}
}
}
}
}
关于elasticsearch - 同一字段的 Elasticsearch 多个过滤器值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69677413/