2017-10-13 94 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" 
       } 
      } 
      }] 
     } 
    } 
}