Elasticsearch系列(4):基本搜索


空搜索

搜索API的最基礎的形式是沒有指定任何查詢的空搜索 ,它簡單地返回集群中所有索引下的所有文檔,如下命令:

GET /_search

返回如下結果:

image

查詢結果解釋:

1,hits

返回結果中最重要的部分是 hits ,它 包含 total 字段來表示匹配到的文檔總數,並且一個 hits 數組包含所查詢結果的前十個文檔。

2,took

took 值告訴我們執行整個搜索請求耗費了多少毫秒。

3,timeout

timed_out 值告訴我們查詢是否超時。默認情況下,搜索請求不會超時。 如果低響應時間比完成結果更重要,你可以指定 timeout 為 10 或者 10ms(10毫秒),或者 1s(1秒)。以下命令:

GET /_search?timeout=10ms

查詢字符串

查詢字符串搜索非常適用於通過命令行做即席查詢,比如我們的需求是:

  1. system_code字段包含Ubtrip。
  2. message字段包含雲凱或者本京。

所以查詢字符串為:?q=system_code:Ubtrip+message:(雲凱 本京),所以完整的查詢命令為:

GET /log/debuglog/_search?q=system_code:Ubtrip+message:(雲凱 本京)

查詢表達式

相較查詢字符串,查詢表達式更靈活,更強大。

一個查詢表達式的典型結構為:

{
    QUERY_NAME: {
        ARGUMENT: VALUE,
        ARGUMENT: VALUE,...
    }
}

如果是針對某個字段,那么它的結構為:

{
    QUERY_NAME: {
        FIELD_NAME: {
            ARGUMENT: VALUE,
            ARGUMENT: VALUE,...
        }
    }
}

比如:使用查詢表達式來查詢所有數據,使用到了match_all查詢,表達式命令為:

GET /log/debuglog/_search
{
  "query": {
    "match_all": {}
  }
}

查詢結果為:

image

比如:我要查詢system_code字段包含Ubtrip的數據,使用到了match查詢,查詢表達式語句為:

GET /log/debuglog/_search
{
  "query": {
    "match": {
      "system_code": "Ubtrip"
    }
  }
}

查詢結果為:

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM