Elasticsearch 結構化查詢

1)環境準備

啓動Elasticsearch https://blog.csdn.net/qq_36918149/article/details/104221934
啓動Kinbana https://blog.csdn.net/qq_36918149/article/details/104224625
2)什麼是結構化數據?
在這裏插入圖片描述

2)什麼是結構化數據搜索?

在這裏插入圖片描述

3)demo 演示

#結構化搜索,數據初始化
DELETE products
POST /products/_bulk
{ "index": { "_id": 1 }}
{ "price" : 10,"avaliable":true,"date":"2018-01-01", "productID" : "XHDK-A-1293-#fJ3" }
{ "index": { "_id": 2 }}
{ "price" : 20,"avaliable":true,"date":"2019-01-01", "productID" : "KDKE-B-9947-#kL5" }
{ "index": { "_id": 3 }}
{ "price" : 30,"avaliable":true, "productID" : "JODL-X-1937-#pV7" }
{ "index": { "_id": 4 }}
{ "price" : 30,"avaliable":false, "productID" : "QQPX-R-3956-#aD8" }

GET products/_mapping

#對布爾值 match 查詢,有算分

POST products/_search
{
  "profile": "true",
  //表示看索引規則
  "explain": true,
  "query": {
    "term": {
      "avaliable": true
    }
  }
}
#結果搜索出了 "avaliable": true的所有記錄

#對布爾值,通過constant score 轉成 filtering,沒有算分

POST products/_search
{
  "profile": "true",
  "explain": true,
  "query": {
    "constant_score": {
      "filter": {
        "term": {
          "avaliable": true
        }
      }
    }
  }
}
#沒有算分功能,查詢更快

#數字類型 Term,查詢固定值

POST products/_search
{
  "profile": "true",
  "explain": true,
  "query": {
    "term": {
      "price": 30
    }
  }
}

#數字類型 terms,查詢區間

POST products/_search
{
  "query": {
    "constant_score": {
      "filter": {
        "terms": {
          "price": [
            "20",
            "30"
          ]
        }
      }
    }
  }
}

#數字 Range 查詢,gte 大於等於,lte小於等於

GET products/_search
{
    "query" : {
        "constant_score" : {
            "filter" : {
                "range" : {
                    "price" : {
                        "gte" : 20,
                        "lte"  : 30
                    }
                }
            }
        }
    }
}

#日期 range,3y表示三年

POST products/_search
{
    "query" : {
        "constant_score" : {
            "filter" : {
                "range" : {
                    "date" : {
                      "gte" : "now-3y"
                    }
                }
            }
        }
    }
}

日期表達式
在這裏插入圖片描述

#exists查詢

POST products/_search
{
  "query": {
    "constant_score": {
      "filter": {
        "exists": {
          "field": "date"
        }
      }
    }
  }
}
#查詢date字段存在的數據

#處理多值字段

POST /movies/_bulk
{ "index": { "_id": 1 }}
{ "title" : "Father of the Bridge Part II","year":1995, "genre":"Comedy"}
{ "index": { "_id": 2 }}
{ "title" : "Dave","year":1993,"genre":["Comedy","Romance"] }


#處理多值字段,term 查詢是包含,而不是等於
POST movies/_search
{
  "query": {
    "constant_score": {
      "filter": {
        "term": {
          "genre.keyword": "Comedy"
        }
      }
    }
  }
}


#字符類型 terms
POST products/_search
{
  "query": {
    "constant_score": {
      "filter": {
        "terms": {
          "productID.keyword": [
            "QQPX-R-3956-#aD8",
            "JODL-X-1937-#pV7"
          ]
        }
      }
    }
  }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章