<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ### 組合過濾 前面的兩個例子展示了單個過濾器的使用。現實中,你可能需要過濾多個值或字段,例如,想在 Elasticsearch 中表達這句 SQL 嗎? ```sql SELECT product FROM products WHERE (price = 20 OR productID = "XHDK-A-1293-#fJ3") AND (price != 30) ``` 這些情況下,你需要 `bool` 過濾器。這是以其他過濾器作為參數的_組合過濾器_,將它們結合成多種布爾組合。 #### 布爾過濾器 `bool` 過濾器由三部分組成: ```json { "bool" : { "must" : [], "should" : [], "must_not" : [], } } ``` `must`:所有分句都_必須_匹配,與 `AND` 相同。 `must_not`:所有分句都_必須不_匹配,與 `NOT` 相同。 `should`:至少有一個分句匹配,與 `OR` 相同。 這樣就行了!假如你需要多個過濾器,將他們放入 `bool` 過濾器就行。 提示: `bool` 過濾器的每個部分都是可選的(例如,你可以只保留一個 `must` 分句),而且每個部分可以包含一到多個過濾器 為了復制上面的 SQL 示例,我們將兩個 `term` 過濾器放在 `bool` 過濾器的 `should` 分句下,然后用另一個分句來處理 `NOT` 條件: ```json GET /my_store/products/_search { "query" : { "filtered" : { <1> "filter" : { "bool" : { "should" : [ { "term" : {"price" : 20}}, <2> { "term" : {"productID" : "XHDK-A-1293-#fJ3"}} <2> ], "must_not" : { "term" : {"price" : 30} <3> } } } } } } ``` <!-- SENSE: 080_Structured_Search/10_Bool_filter.json --> <1> 注意我們仍然需要用 `filtered` 查詢來包裹所有條件。 <2> 這兩個 `term` 過濾器是 `bool` 過濾器的_子節點_,因為它們被放在 `should` 分句下,所以至少他們要有一個條件符合。 <3> 如果一個產品價值 `30`,它就會被自動排除掉,因為它匹配了 `must_not` 分句。 我們的搜索結果返回了兩個結果,分別滿足了 `bool` 過濾器中的不同分句: ```json "hits" : [ { "_id" : "1", "_score" : 1.0, "_source" : { "price" : 10, "productID" : "XHDK-A-1293-#fJ3" <1> } }, { "_id" : "2", "_score" : 1.0, "_source" : { "price" : 20, <2> "productID" : "KDKE-B-9947-#kL5" } } ] ``` <1> 匹配 `term` 過濾器 `productID = "XHDK-A-1293-#fJ3"` <2> 匹配 `term` 過濾器 `price = 20` #### 嵌套布爾過濾器 雖然 `bool` 是一個組合過濾器而且接受子過濾器,需明白它自己仍然只是一個過濾器。這意味著你可以在 `bool` 過濾器中嵌套 `bool` 過濾器,讓你實現更復雜的布爾邏輯。 下面先給出 SQL 語句: ```sql SELECT document FROM products WHERE productID = "KDKE-B-9947-#kL5" OR ( productID = "JODL-X-1937-#pV7" AND price = 30 ) ``` 我們可以將它翻譯成一對嵌套的 `bool` 過濾器: ```json GET /my_store/products/_search { "query" : { "filtered" : { "filter" : { "bool" : { "should" : [ { "term" : {"productID" : "KDKE-B-9947-#kL5"}}, <1> { "bool" : { <1> "must" : [ { "term" : {"productID" : "JODL-X-1937-#pV7"}}, <2> { "term" : {"price" : 30}} <2> ] }} ] } } } } } ``` <!-- SENSE: 080_Structured_Search/10_Bool_filter.json --> <1> 因為 `term` 和 `bool` 在第一個 `should` 分句中是平級的,至少需要匹配其中的一個過濾器。 <2> `must` 分句中有兩個平級的 `term` 分句,所以他們倆都需要匹配。 結果得到兩個文檔,分別匹配一個 `should` 分句: ```json "hits" : [ { "_id" : "2", "_score" : 1.0, "_source" : { "price" : 20, "productID" : "KDKE-B-9947-#kL5" <1> } }, { "_id" : "3", "_score" : 1.0, "_source" : { "price" : 30, <2> "productID" : "JODL-X-1937-#pV7" <2> } } ] ``` <1> `productID` 匹配第一個 `bool` 中的 `term` 過濾器。 <2> 這兩個字段匹配嵌套的 `bool` 中的 `term` 過濾器。 這只是一個簡單的例子,但是它展示了該怎樣用布爾過濾器來構造復雜的邏輯條件。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看