2017-10-13 57 views
0

如何将这两个查询放在一起,因为您可以看到查询一将从今天开始带回所有日期,而第二个查询正在为所有具有名称测试的用户带回数据在里面。将两个查询放在一起

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

查询之一:

{ 
    "_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) 

回答

1

您可以使用bool查询有两个must条款,如:

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

检查出的文档bool query

0

这将帮助你: POST _search

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