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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 最重要的查詢過濾語句 Elasticsearch 提供了豐富的查詢過濾語句,而有一些是我們較常用到的。 我們將會在后續的《深入搜索》中展開討論,現在我們快速的介紹一下 這些最常用到的查詢過濾語句。 ## `term` 過濾 `term`主要用于精確匹配哪些值,比如數字,日期,布爾值或 `not_analyzed`的字符串(未經分析的文本數據類型): ```Javascript { "term": { "age": 26 }} { "term": { "date": "2014-09-01" }} { "term": { "public": true }} { "term": { "tag": "full_text" }} ``` ## `terms` 過濾 `terms` 跟 `term` 有點類似,但 `terms` 允許指定多個匹配條件。 如果某個字段指定了多個值,那么文檔需要一起去做匹配: ```Javascript { "terms": { "tag": [ "search", "full_text", "nosql" ] } } ``` ## `range` 過濾 `range`過濾允許我們按照指定范圍查找一批數據: ```Javascript { "range": { "age": { "gte": 20, "lt": 30 } } } ``` 范圍操作符包含: `gt` :: 大于 `gte`:: 大于等于 `lt` :: 小于 `lte`:: 小于等于 ## `exists` 和 `missing` 過濾 `exists` 和 `missing` 過濾可以用于查找文檔中是否包含指定字段或沒有某個字段,類似于SQL語句中的`IS_NULL`條件 ```Javascript { "exists": { "field": "title" } } ``` 這兩個過濾只是針對已經查出一批數據來,但是想區分出某個字段是否存在的時候使用。 ## `bool` 過濾 `bool` 過濾可以用來合并多個過濾條件查詢結果的布爾邏輯,它包含一下操作符: `must` :: 多個查詢條件的完全匹配,相當于 `and`。 `must_not` :: 多個查詢條件的相反匹配,相當于 `not`。 `should` :: 至少有一個查詢條件匹配, 相當于 `or`。 這些參數可以分別繼承一個過濾條件或者一個過濾條件的數組: ```Javascript { "bool": { "must": { "term": { "folder": "inbox" }}, "must_not": { "term": { "tag": "spam" }}, "should": [ { "term": { "starred": true }}, { "term": { "unread": true }} ] } } ``` ## `match_all` 查詢 使用`match_all` 可以查詢到所有文檔,是沒有查詢條件下的默認語句。 ```Javascript { "match_all": {} } ``` 此查詢常用于合并過濾條件。 比如說你需要檢索所有的郵箱,所有的文檔相關性都是相同的,所以得到的`_score`為1 ## `match` 查詢 `match`查詢是一個標準查詢,不管你需要全文本查詢還是精確查詢基本上都要用到它。 如果你使用 `match` 查詢一個全文本字段,它會在真正查詢之前用分析器先分析`match`一下查詢字符: ```Javascript { "match": { "tweet": "About Search" } } ``` 如果用`match`下指定了一個確切值,在遇到數字,日期,布爾值或者`not_analyzed` 的字符串時,它將為你搜索你給定的值: ```Javascript { "match": { "age": 26 }} { "match": { "date": "2014-09-01" }} { "match": { "public": true }} { "match": { "tag": "full_text" }} ``` >**提示**: >做精確匹配搜索時,你最好用過濾語句,因為過濾語句可以緩存數據。 不像我們在《簡單搜索》中介紹的字符查詢,`match`查詢不可以用類似"+usid:2 +tweet:search"這樣的語句。 它只能就指定某個確切字段某個確切的值進行搜索,而你要做的就是為它指定正確的字段名以避免語法錯誤。 ## `multi_match` 查詢 `multi_match`查詢允許你做`match`查詢的基礎上同時搜索多個字段: ```Javascript { "multi_match": { "query": "full text search", "fields": [ "title", "body" ] } } ``` ## `bool` 查詢 `bool` 查詢與 `bool` 過濾相似,用于合并多個查詢子句。不同的是,`bool` 過濾可以直接給出是否匹配成功, 而`bool` 查詢要計算每一個查詢子句的 `_score` (相關性分值)。 `must`:: 查詢指定文檔一定要被包含。 `must_not`:: 查詢指定文檔一定不要被包含。 `should`:: 查詢指定文檔,有則可以為文檔相關性加分。 以下查詢將會找到 `title` 字段中包含 "how to make millions",并且 "tag" 字段沒有被標為 `spam`。 如果有標識為 "starred" 或者發布日期為2014年之前,那么這些匹配的文檔將比同類網站等級高: ```Javascript { "bool": { "must": { "match": { "title": "how to make millions" }}, "must_not": { "match": { "tag": "spam" }}, "should": [ { "match": { "tag": "starred" }}, { "range": { "date": { "gte": "2014-01-01" }}} ] } } ``` >**提示**: >如果`bool` 查詢下沒有`must`子句,那至少應該有一個`should`子句。但是 如果有`must`子句,那么沒有`should`子句也可以進行查詢。
                  <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>

                              哎呀哎呀视频在线观看