Elasticsearch - 如何过滤/查询参数值?

时间:2016-02-29 15:28:04

标签: json elasticsearch parameters

我是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。

1 个答案:

答案 0 :(得分:0)

你试过这个:

AuthenticateException

{ "query": { "bool": { "should": [ { "terms": { "FIELD": [ "@customer_id", "111" ] } } ] } } } 是用户传递的值