一.subprocess模塊 subprocess是Python 2.4中新增的一個模塊,它允許你生成新的進程,連接到它們的 input/output/error 管道,並獲取它們的返回(狀態)碼。這個模塊的目的在於替換幾個舊的模塊和方法,如: os.system os.spawn* 1.subpr ...
一 原理知識
Bool查詢包括四種子句:
- must
- filter
- should
- must_not
1.must
文檔 必須 匹配這些條件才能被包含進來。
相當於sql中的 and
2.must_not
文檔 必須不 匹配這些條件才能被包含進來。
相當於sql中的 not
3.should
如果滿足這些語句中的任意語句,將增加 _score ,否則,無任何影響。它們主要用於修正每個文檔的相關性得分。
相當於sql中的or
4.filter
必須 匹配,但它以不評分、過濾模式來進行。這些語句對評分沒有貢獻,只是根據過濾標準來排除或包含文檔。
區別:
must:返回的文檔必須滿足must子句的條件,並且參與計算分值
filter:返回的文檔必須滿足filter子句的條件。但是跟Must不一樣的是,不會計算分值, 並且可以使用緩存
must和filter是一樣的。區別是場景不一樣。如果結果需要算分就使用must,否則可以考慮使用filter,使查詢更高效。
註意:
當使用should查詢時,如果包含了must或者filter查詢,那麼should的查詢語句就不是或者【OR】的意思了,而是有或者沒有都行的含義。filter和should語句組合查詢,會導致should語句失效。
1 搜索 (state = 0 或者 state不存在的記錄) and payState = 1 2 { 3 query: { 4 bool: { 5 filter: [{ 6 "bool": { 7 "should": [ 8 { "term": { "state": 0 } }, 9 { "bool": { "must_not": { "exists": { "field": "state" } } } } 10 ] 11 } 12 }, 13 { term: { payState: 1 } } 14 ] 15 16 } 17 } 18 } 19 }View Code
二 設計