<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 執行搜索 現在我們已經知道了幾個基本的參數, 讓我們進一步學習查詢語言。首先我們看一下返回文檔的字段。 默認情況下,是返回完整的JSON文檔的。這可以通過`source`來引用(搜索`hits`中的`_source`字段)。如果我們不想返回完整的源文檔,我們可以指定返回的幾個字段。 下面這個例子說明了從搜索中只返回兩個字段`account_number`和`balance`(這兩個字段都必須包含在`_source`中),如下: ``` GET /bank/_search { "query": { "match_all": {} }, "_source": ["account_number", "balance"] } ``` 注意到上面的例子簡化了`_source`字段,它仍將會返回一個叫做`_source`的字段,但是只會包含`account_number`和`balance`兩個子字段。 如果你有SQL經驗,上述查詢在概念上有些像SQL的 `SELECT 字段1, 字段2 FROM TABLE_1`。 現在讓我們進入到查詢部分。之前,我們學習了`match_all`查詢是怎樣匹配到所有的文檔的。現在我們介紹一種新的查詢,叫做`match`查詢,這可以看成是一個簡單的字段搜索(比如對某個或某些特定字段的搜索) 下面這個例子返回賬戶編號為20的文檔: ``` GET /bank/_search { "query": { "match": { "account_number": 20 } } } ``` 下面這個例子返回地址中包含了“mill”詞條(term)的所有賬戶: ``` GET /bank/_search { "query": { "match": { "address": "mill" } } } ``` 下面這個例子返回地址中包含“mill”或者“lane”詞條的賬戶: ``` GET /bank/_search { "query": { "match": { "address": "mill lane" } } } ``` 下面這個例子是`match`的變體(`match_phrase`),它會去匹配短語“mill lane”: ``` GET /bank/_search { "query": { "match_phrase": { "address": "mill lane" } } } ``` 現在,讓我們介紹一下[布爾查詢](../../Query_DSL/Compound_queries/Bool_Query.md)。布爾查詢允許我們利用布爾邏輯將較小的查詢組合成較大的查詢。 現在這個例子組合了兩個`match`查詢,這個組合查詢返回同時包含了“mill” 和“lane” 的所有的賬戶: ``` GET /bank/_search { "query": { "bool": { "must": [ { "match": { "address": "mill" } }, { "match": { "address": "lane" } } ] } } } ``` 在上面的例子中,`bool``must`語句指明了對于一個文檔,所有的查詢都必須為真,這個文檔才能夠匹配成功。 相反的, 下面的例子組合了兩個`match`查詢,它返回的是地址中可能包含了“mill” 或者“lane”的所有的賬戶: ``` GET /bank/_search { "query": { "bool": { "should": [ { "match": { "address": "mill" } }, { "match": { "address": "lane" } } ] } } } ``` 在上面的例子中`bool``should`語句指明,對于一個文檔,查詢列表中,只要有一個查詢匹配,那么這個文檔就被看成是匹配的。 現在這個例子組合了兩個查詢,它返回地址中既不包含“mill”,同時也不包含“lane”的所有的賬戶信息: ``` GET /bank/_search { "query": { "bool": { "must_not": [ { "match": { "address": "mill" } }, { "match": { "address": "lane" } } ] } } } ``` 在上面的例子中,`bool``must_not`語句指明,對于一個文檔,查詢列表中的的所有查詢都必須都不為真,這個文檔才被認為是匹配的。 我們可以在一個bool查詢里一起使用`must`、`should`、`must_not`。 此外,我們可以將bool查詢放到這樣的bool語句中來模擬復雜的、多層級的布爾邏輯。 下面這個例子返回40歲以上并且不生活在ID(aho)的人的賬戶: ``` GET /bank/_search { "query": { "bool": { "must": [ { "match": { "age": "40" } } ], "must_not": [ { "match": { "state": "ID" } } ] } } } ``` > my note > > `match_phrase` 短語匹配
                  <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>

                              哎呀哎呀视频在线观看