Elasticsearch请求中的多个条件

时间:2013-01-16 13:31:01

标签: ajax elasticsearch wildcard

我在Ajax调用中使用了以下POST请求但是我无法添加其他搜索条件。我还希望能够通过通配符搜索许多其他字段。示例firstName为“j *”,lastName为“p *”。如何为此类查询添加另外两个条件。我知道如何在curl请求中执行此操作时,它是一个GET请求,但不知道如何将其作为POST请求。

在GET请求中,我只想添加以下内容。

+%2bfirstName:j*

POST请求

{
    "query": {
        "filtered": {
            "query": {
                "range": {
                    "date": {
                        "include_lower": true,
                        "include_upper": false,
                        "from": "1999-01-01",
                        "to": "2002-01-01"
                    }
                }
            },
            "filter": {
                "term": {
                    "locationNumber": "453"
                }
            }
        }

    }
}

1 个答案:

答案 0 :(得分:2)

您可以使用bool query在查询中组合多个条件。例如:

{
    "query": {
        "filtered": {
            "query": {
                "bool": {
                    "must": [
                        {
                            "range": {
                                "date": {
                                    "include_lower": true,
                                    "include_upper": false,
                                    "from": "1999-01-01",
                                    "to": "2002-01-01"
                                }
                            }
                        },
                        {
                            "wildcard": {
                                "firstName": "j*"
                            }
                        }
                    ]
                }
            },
            "filter": {
                "term": {
                    "locationNumber": "453"
                }
            }
        }

    }
}