ElasticSearch(五):簡單的ElasticSearch搜索功能


這里主要是一些簡單的ElasticSearch的搜索功能,復雜的搜索,比如過濾,聚合等以后單獨在寫

1. 搜索全部

GET book/_search

直接搜索全部,下面是對搜索結果的詳細介紹:默認情況下,是查詢出來10條數據,並且按照score的由高到低順序排列的(因為搜索全部,這里沒有score,當條件搜索的時候,會出現。)

2. 單條件搜索

條件查詢分為兩類:

  • match:match查詢的時候,elasticsearch會根據你給定的字段提供合適的分析器,將查詢語句分詞之后去匹配含有分詞之后詞語的。
  • term:不進行分詞,直接完全匹配查詢。
  • 需要注意的是:如果你搜索的字段是keyword類型,那么無論match和term都是一樣的,都不進行分詞。
//match進行查詢
GET book/novel/_search
{
  "query": {
    "match": {
      "author": "美十與"
    }
  }
}
//term進行查詢
GET book/novel/_search
{
  "query": {
    "term": {
      "author": {
        "value": "己平"
      }
    }
  }
}

解釋:查詢,需要符合條件:author = “美十與”的結果。這里還有:match_all等其余的方法。

  其中 :match_all的是一個空查詢,就是查詢索引類型下的所有文檔。可以查詢出所有文檔之后在進行過濾等。

3. 多條件查詢

GET book/novel/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "wordCount": "8343705",
       "author": "123"
          }
        }
      ],
      "must_not": [
        {
          "match": {
            "author": "天回"
          }
        }
      ]
    }
  }
}

其中:bool可以用來實現多條件查詢,bool包含的屬性如下:

  must:表示必須匹配的屬性,匹配這些條件才能被包含進來

  must_not:表示不能匹配這些條件才能被包含進來。

  should :如果滿足這些語句中的任意語句,將增加 _score ,否則,無任何影響。它們主要用於修正每個文檔的相關性得分。

  filter :必須 匹配,但它以不評分、過濾模式來進行。這些語句對評分沒有貢獻,只是根據過濾標准來排除或包含文檔。

需要特別注意的是: match不支持多條件查詢,會提示 [match] query doesn't support multiple fields, found [author] and [wordCount]"。

一個復雜查詢的例子(未經驗證)

{
    "bool": {
        "must": { "match":   { "email": "business opportunity" }},
        "should": [
            { "match":       { "starred": true }},
            { "bool": {
                "must":      { "match": { "folder": "inbox" }},
                "must_not":  { "match": { "spam": true }}
            }}
        ],
        "minimum_should_match": 1
    }
}

 

4. 排序,分頁

GET book/novel/_search
{
  "query": {
    "match": {
      "author": "天為回"
    }
  },
  "from": 0, 
  "size":10,
  "sort": [
    {
      "wordCount": {
        "order": "desc"
      }
    }
  ]
}

其中:from:表示分頁開始的條數(也是從0開始),size表示你要查詢的數量。

  sort:排序的字段,根據哪個字段進行如何排序,上面例子:根據wordCount字段倒序排列。

 


免責聲明!

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



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