有没有办法查询弹性搜索包含多值字段中一个属性值的所有文档;即:
我在字段COLORS中有一个属性值列表:红色,蓝色,黑色,绿色 另一个属性在字段PREFERENCE:Red
中有一个值有没有办法在多值字段COLORS中选择包含在PREFERENCE字段中找到的值的所有文档?
SQL等价物就是这种东西:
SELECT * FROM index WHERE COLORS LIKE CONCAT('%', PREFERENCE, '%')
答案 0 :(得分:1)
您可以使用脚本过滤器。像这样的东西
GET /test/stack/_search
{
"query": {
"match_all": {}
},
"filter": {
"script":{
"script":"if(doc['colors'].values.indexOf(doc['preference'].value) > -1) true; else false;" ,
"params": {}
},"lang":"js"
}
}