Elasticsearch查询选择一个字段的值包含多值字段的所有文档

时间:2014-03-04 01:03:43

标签: json elasticsearch multivalue

有没有办法查询弹性搜索包含多值字段中一个属性值的所有文档;即:

我在字段COLORS中有一个属性值列表:红色,蓝色,黑色,绿色 另一个属性在字段PREFERENCE:Red

中有一个值

有没有办法在多值字段COLORS中选择包含在PREFERENCE字段中找到的值的所有文档?

SQL等价物就是这种东西:

SELECT * FROM index WHERE COLORS LIKE CONCAT('%', PREFERENCE, '%')

1 个答案:

答案 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"
    }
}