ES中查詢語句DSL(domain specific language)


DSL 是一種采用JSON格式的查詢

#查看所有索引
GET /_cat/indices?v

#刪除某個索引
DELETE /skuinfo

#新增索引
PUT /user

#創建映射
PUT /user/userinfo/_mapping
{
  "properties": {
    "name":{
      "type": "text",
      "analyzer": "ik_smart",
      "search_analyzer": "ik_smart",
      "store": false
    },
    "city":{
      "type": "text",
      "analyzer": "ik_smart",
      "search_analyzer": "ik_smart",
      "store": false
    },
    "age":{
      "type": "long",
      "store": false
    },
    "description":{
      "type": "text",
      "analyzer": "ik_smart",
      "search_analyzer": "ik_smart",
      "store": false
    }
  }
}


#新增文檔數據 id=1
PUT /user/userinfo/1
{
  "name":"李四",
  "age":22,
  "city":"深圳",
  "description":"李四來自湖北武漢!"
}

#新增文檔數據 id=2
PUT /user/userinfo/2
{
  "name":"王五",
  "age":35,
  "city":"深圳",
  "description":"王五家住在深圳!"
}

#新增文檔數據 id=3
PUT /user/userinfo/3
{
  "name":"張三",
  "age":19,
  "city":"深圳",
  "description":"在深圳打工,來自湖北武漢"
}

#新增文檔數據 id=4
PUT /user/userinfo/4
{
  "name":"張三豐",
  "age":66,
  "city":"武漢",
  "description":"在武漢讀書,家在武漢!"
}

#新增文檔數據 id=5
PUT /user/userinfo/5
{
  "name":"趙子龍",
  "age":77,
  "city":"廣州",
  "description":"趙子龍來自深圳寶安,但是在廣州工作!",
  "address":"廣東省茂名市"
}

#新增文檔數據 id=6
PUT /user/userinfo/6
{
  "name":"趙毅",
  "age":55,
  "city":"廣州",
  "description":"趙毅來自廣州白雲區,從事電子商務8年!"
}

#新增文檔數據 id=7
PUT /user/userinfo/7
{
  "name":"趙哈哈",
  "age":57,
  "city":"武漢",
  "description":"武漢趙哈哈,在深圳打工已有半年了,月薪7500!"
}


#根據ID查詢
GET /user/userinfo/4



#更新數據,id=4   覆蓋原來的數據
PUT /user/userinfo/4
{
  "name":"張三豐",
  "description":"在武漢讀書,家在武漢!在深圳工作!"
}

#恢復文檔數據 id=4
PUT /user/userinfo/4
{
  "name":"張三豐",
  "age":66,
  "city":"武漢",
  "description":"在武漢讀書,家在武漢!"
}


#使用POST更新某個域的數據 , 不會覆蓋原來的數據
POST /user/userinfo/4/_update
{
  "doc":{
    "name":"張三豐",
    "description":"在武漢讀書,家在武漢!在深圳工作!"
  }
}

#刪除數據
DELETE user/userinfo/4



#查詢某個類型(表)的所有數據
GET /user/userinfo/_search


#查詢索引庫(數據庫)所有
GET /user/_search

#搜索排序
GET /user/userinfo/_search
{
  "query":{
    "match_all": {}
  },
  "sort":{
    "age":{
      "order":"desc"
    }
  }
}

#分頁實現
GET /user/userinfo/_search
{
  "query":{
    "match_all": {}
  },
  "sort":{
    "age":{
      "order":"desc"
    }
  },
  "from": 0,
  "size": 2
}


#過濾查詢-term  完全匹配
GET /user/userinfo/_search
{
  "query":{
    "term":{
      "city":"武漢"
    }
  }
}

#過濾查詢-terms 允許多個Term
GET /user/userinfo/_search
{
  "query":{
    "terms":{
      "city":
        [
          "武漢",
          "廣州"
        ]
    }
  }
}


#過濾-range 范圍過濾
#gt表示> gte表示=>
#lt表示< lte表示<=
GET /user/userinfo/_search
{
  "query":{
    "range": {
      "age": {
        "gte": 30,
        "lte": 57
      }
    }
  }
}


#過濾搜索 bool 
#must : 多個查詢條件的完全匹配,相當於 and。
#must_not : 多個查詢條件的相反匹配,相當於 not。
#should : 至少有一個查詢條件匹配, 相當於 or。
GET /user/userinfo/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "city": {
              "value": "深圳"
            }
          }
        },
        {
          "range":{
            "age":{
              "gte":20,
              "lte":99
            }
          }
        }
      ]
    }
  }
}

#查詢所有 match_all
GET /user/userinfo/_search
{
  "query": {
    "match_all": {}
  }
}

#字符串匹配
GET /user/userinfo/_search
{
  "query": {
    "match": {
      "description": "武漢"
    }
  }
}

#多個域匹配搜索
GET /user/userinfo/_search
{
  "query": {
    "multi_match": {
      "query": "深圳",
      "fields": [
        "city",
        "description"
      ]
    }
  }
}

#前綴匹配 prefix
GET /user/userinfo/_search
{
  "query": {
    "prefix": {
      "name": {
        "value": ""
      }
    }
  }
}

 


免責聲明!

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



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