将两个查询放在一起

时间:2017-10-13 13:37:37

标签: elasticsearch

我如何能够将这两个查询放在一起,因为您可以看到查询正在从今天开始返回所有日期,第二个查询将为其中包含名称test的所有用户返回数据。

所以我想带回具有测试名称的数据的所有数据。 有人可以告诉我这是怎么做的吗?

查询一个:

{  
   "_source":["VT"],
 "query": {
        "range": {
            "VT": {
                "gte": "now/d",
                "lt": "now/d+13h"
            }
        }}

}

查询二:

from elasticsearch import Elasticsearch

es = Elasticsearch(["9200"])

res = es.search(index="search", body=
                {
                    "_source": ["DTDT", "TRDT"],

                    "query": {
                        "bool": {
                            "should": [
        {"wildcard": {"N": "TEST*"}}
      ]
                        }
                    }
}, size=10

               )

for doc in res['hits']['hits']:
    print(doc)

2 个答案:

答案 0 :(得分:1)

您可以使用bool个查询和两个must子句,如下所示:

{
  "_source": ["DTDT", "TRDT", "VT"],
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "VT": {
              "gte": "now/d",
              "lt": "now/d+13h"
            }
          }
        },
        {
          "wildcard": {
            "N": "TEST*"
          }
        }
      ]
    }
  }
}

查看bool query的文档。

答案 1 :(得分:0)

这将有助于您: POST _search

{
    "query": {
        "bool": {
            "must": [
            {
                "range": {
                    "VT": {
                        "gte": "now/d", 
                        "lt": "now/d+13h"
                    }
                }
            },
            {
            "match": {
              "N": {
                "query": "TEST",
                "operator": "and"
              }
            }
            }]
        }
    }
}