ES:檢索

weixin_33912246發表於2018-11-07

檢索結果

{
    "took": 1,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 6,
        "max_score": 1,
        "hits": [
            {
                "_index": "demo_index",
                "_type": "book",
                "_id": "SxjQ7GYBM6fTWTbSFQWh",
                "_score": 1,
                "_source": {
                    "id": 5,
                    "title": "Java",
                    "author": "david",
                    "content": "Java object"
                }
            }
        ]
    }
}
分類 後設資料 說明
文件屬性後設資料 _index 文件所屬的索引
文件屬性後設資料 _id 文件的id
文件屬性後設資料 _type 文件所屬型別
文件屬性後設資料 _uid 由_type和_id欄位組成
文件後設資料 _source 文件的原生json字串
文件後設資料 _size 整個_source欄位的位元組數大小
索引後設資料 _all 自動組合所有的欄位值
索引後設資料 _field_names 索引了每個欄位的名稱
路由後設資料 _parent 指定文件之間父子關係,已過時
路由後設資料 _routing 將一個文件根據路由儲存到指定分片上
自定義後設資料 _meta 用於自定義後設資料

term查詢

  1. 單項查詢
    term查詢用於查詢指定欄位中包含指定分詞的檔案,只有當查詢分詞和文件中的分詞精確匹配時才被檢索到。
curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
  "query": {
    "term": {
      "author": "david"
    }
  }
}'
  1. 分頁
curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
  "query": {
    "terms": {
      "author": ["david","as"]
    }
  },
  "from":0,
  "size":3
}'
  1. 過濾欄位
    在結果中只顯示指定的欄位
curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
  "_source": ["title","author"], 
  "query": {
    "term": {
      "author": "david"
    }
  }
}'
  1. 顯示version
curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
  "_source": ["title","author"], 
  "version": true, 
  "query": {
    "term": {
      "author": "david"
    }
  }
}'
  1. 評分過濾
curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
  "_source": ["title","author"], 
  "version": true, 
  "min_score":"0.5",
  "query": {
    "term": {
      "author": "david"
    }
  }
}'
  1. 高亮關鍵字
curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
  "query": {
    "term": {
      "author": "david"
    }
  },
  "highlight": {
    "fields": {
      "author": {}
    }
  }
}'

match 查詢

  1. 詞項匹配查詢
curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
  "query": {
    "match": {
      "author": {
        "query": "david"
      }
    }
  }
}'
  1. and操作符
curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
  "query": {
    "match": {
      "author": {
        "query": "jz季舟",
        "operator":"and"
      }
    }
  }
}'

必須存在“jz季舟”這個分詞

  1. or操作符
curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
  "query": {
    "match": {
      "author": {
        "query": "jz季舟",
        "operator":"or"
      }
    }
  }
}'

存在“jz”或者“季舟”這兩個分詞其中一個即可

  1. match_phrase查詢(短語查詢)
    與match query類似,但用於匹配精確短語,可稱為短語查詢。
    match_phrase查詢會將查詢內容分詞,分詞器可以自定義,文件中同時滿足以下兩個條件才會被檢索到:分詞後所有詞項都要出現在該欄位中;欄位中的詞項順序要一致。
curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
  "query": {
    "match_phrase": {
      "content": "hello world"
    }
  }
}'
  1. match_phrase_prefix 查詢(字首查詢)
    match_phrase_prefix與match_phrase相同,只是它允許在文字中的最後一個詞的字首匹配。也就是說,對match_phrase進行了擴充套件,查詢內容的最後一個分詞與只要滿足字首匹配即可。
curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
  "query": {
    "match_phrase_prefix": {
      "content": "hello wor"
    }
  }
}'
  1. multi_match 查詢
    multi_match查詢是match查詢的升級版,用於多欄位檢索。
curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
  "query": {
    "multi_match": {
      "query": "object",
      "fields": ["title","content"]
    }
  }
}'

range查詢

range查詢用於匹配數值型、日期型或字串型欄位在某一範圍內的文件。

curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
    "query": {
        "range" : {
            "age" : {
                "gte" : 10,
                "lte" : 20,
                "boost" : 2.0
            }
        }
    }
}'

exists查詢

返回原始欄位中至少包含一個非空值的文件

curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
    "query": {
        "exists" : { "field" : "age" }
    }
}'

prefix查詢

curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
    "query": {
        "prefix" : { "author" : "ji" }
    }
}'

wildcard查詢(萬用字元查詢)

curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
    "query": {
        "wildcard" : { "content" : "*hello*" }
    }
}'

regexp查詢(正規表示式查詢)

curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
    "query": {
        "regexp":{
            "content": "hel.*"
        }
    }
}'

fuzzy查詢(模糊查詢)

curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
    "query": {
        "fuzzy":{
            "content": "hello"
        }
    }
}'

type查詢

curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
    "query": {
        "type" : {
            "value" : "book"
        }
    }
}'

ids查詢

curl -XPOST '192.168.1.8:9200/customer/_search' -d '
{
    "query": {
        "ids" : {
            "values" : ["2", "3"]
        }
    }
}'

參考
https://blog.csdn.net/chengyuqiang/article/details/79054153
https://blog.csdn.net/chengyuqiang/article/details/79082673
https://blog.csdn.net/chengyuqiang/article/details/79091112

相關文章