我是Elasticsearch的新手,我在过滤/查询中有关于参数比较的以下问题:
在SQL中,我有类似下面的代码,我将SQL值与参数值进行比较,将参数值与固定值进行比较
WHERE(customer.id =:customer_id OR:customer_id ='111')
上面OR的左侧部分没问题,但我如何比较正确的部分?
{“bool”:{ “应该”: [ {“术语”: {“customer.id”:“@ customer_id”} }, { ???? } ] }}
提前致谢。
更新
映射:
{
"_id" : {
"store" : true,
"index" : "not_analyzed"
},
"_timestamp" : {
"enabled" : true,
"store" : true
},
"properties" : {
...
"processDefinition.id" : {
"type" : "string",
"index" : "not_analyzed",
"doc_values" : true
},
"processDefinition.key" : {
"type" : "string",
"index" : "not_analyzed",
"doc_values" : true
},
"processDefinition.name" : {
"type" : "string"
},
"variables" : {
"type" : "nested",
"properties" : {
...
"executionId" : {
"type" : "string",
"index" : "not_analyzed",
"doc_values" : true
},
"id" : {
"type" : "string",
"index" : "not_analyzed",
"doc_values" : true
},
"name" : {
"type" : "string",
"index" : "not_analyzed",
"doc_values" : true
},
"originalType" : {
"type" : "string",
"index" : "not_analyzed",
"doc_values" : true
},
"rawValue" : {
"type" : "string",
"index" : "not_analyzed",
"doc_values" : true
},
"storedType" : {
"type" : "string",
"index" : "not_analyzed",
"doc_values" : true
},
"stringValue" : {
"type" : "string"
}
}
}
}
}
我想要每个“variables.rawValue”:“@ parameter”或“@parameter”:“ABC”。请记住,如果@parameter等于“a”,则过滤器仅返回与“a”相关的信息。如果@parameter等于“ABC”,则过滤器返回与所有内容相关的信息,因为公司ABC是所有子公司的所有者(如“a”)。我可以使用过滤器或来自“a”的用户“ABC”。
我试过了:
"bool": {
"should": {
"terms": {
"variables.rawValue": [
"@currentUser_company",
"ABC"
]
}
}
}
但是过滤器将“a”的结果与“ABC”结合起来。
最后一件事。 ES版本是1.7。
答案 0 :(得分:0)
你试过这个:
AuthenticateException
{
"query": {
"bool": {
"should": [
{
"terms": {
"FIELD": [
"@customer_id",
"111"
]
}
}
]
}
}
}
是用户传递的值