ElasticSearch基本操作

my38778570發表於2022-10-22

文件來源
es下載地址
IK分詞器下載地址

  • 建立索引
    對比關係型資料庫,建立索引就等同建立資料庫
      PUT請求
      http://127.0.0.1:9200/shopping
  • 查詢索引
      GET請求
      http://127.0.0.1:9200/shopping
  • 查詢所有索引
      GET請求
      http://127.0.0.1:9200/_cat/indices?v
  • 刪除索引
      DELETE請求
      http://127.0.0.1:9200/shopping

索引已經建立好了,接下來我們建立文件,並新增資料。這裡的文件可以類比為關係型資料庫中的表資料,新增的資料格式為JSON格式

  • 建立文件

      POST請求
      http://127.0.0.1:9200/shopping/_doc #寫法一
      http://127.0.0.1:9200/shopping/_create # 寫法二
      {"name":"商品"}
      PUT請求,主鍵必須冪等性
      http://127.0.0.1:9200/shopping/_doc/1001 #寫法一
      http://127.0.0.1:9200/shopping/_create/1002 # 寫法二
      {"name":"商品"}
      POST請求 ,建立自定義id
      http://127.0.0.1:9200/shopping/_doc/1001
  • 主鍵查詢

      GET請求
      http://127.0.0.1:9200/shopping/_doc/1001
  • 全查詢

      GET請求
      http://127.0.0.1:9200/shopping/_search
  • 全量修改

      PUT請求
      http://127.0.0.1:9200/shopping/_doc/1001
      {"name":"商品"}
  • 區域性修改

      POST請求
      http://127.0.0.1:9200/shopping/_update/1001
      {"doc":{"name":"區域性修改商品"}}
  • 刪除

      DELETE請求
      http://127.0.0.1:9200/shopping/_doc/1001

    查詢

  • 條件查詢

      GET請求,方法一
      http://127.0.0.1:9200/shopping/_search?q=category:小米
      http://127.0.0.1:9200/shopping/_search?q=name:商品
      GET請求,方法二(推薦)
      http://127.0.0.1:9200/shopping/_search
      {
          "query":{
              "match":{
                  "category":"小米"
              }
          }
      }
  • 全量查詢

      GET請求
      http://127.0.0.1:9200/shopping/_search
      {
          "query":{
              "match_all":{
              }
          }
      }
  • 分頁查詢(from,size)

      GET請求
      http://127.0.0.1:9200/shopping/_search
      {
          "query":{
              "match_all":{
              }
          },
          "from":0,#起始位置/偏移量 ,公式:(頁碼-1* 每頁資料條數
          "size":10,#每頁查詢10}
  • 指定field分頁查詢 (_source)

      GET請求
      http://127.0.0.1:9200/shopping/_search
      {
          "query":{
              "match_all":{
              }
          },
          "from":0,#起始位置/偏移量 ,公式:(頁碼-1* 每頁資料條數
          "size":10,#每頁查詢10"_source":["title"]
      }
  • 查詢排序(sort)

      GET請求
      http://127.0.0.1:9200/shopping/_search
      {
          "query":{
              "match_all":{
              }
          },
          "from":0,#起始位置/偏移量 ,公式:(頁碼-1* 每頁資料條數
          "size":10,#每頁查詢10"_source":["title"],
          "sort":{
              "price":{
                  "order":"desc"
              }
          }
      }

    多條件查詢

  • and查詢(must)

      GET請求
      http://127.0.0.1:9200/shopping/_search
      {
          "query":{
              "bool":{
                  "must":[ 
                      {
                          "match":{
                              "category":"小米"
                          }
                      },
                      {
                          "match":{
                              "price":1999.00
                          }
                      }
                  ]
              }
          }
      }
  • or查詢(should)

      GET請求
      http://127.0.0.1:9200/shopping/_search
      {
          "query":{
              "bool":{
                  "should":[ 
                      {
                          "match":{
                              "category":"小米"
                          }
                      },
                      {
                          "match":{
                              "price":1999.00
                          }
                      }
                  ]
              }
          }
      }
  • 範圍查詢(filter,range)

      GET請求
      http://127.0.0.1:9200/shopping/_search
      {
          "query":{
              "bool":{
                  "should":[
                      {
                          "match":{
                              "category":"小米"
                          }
                      },
                      {
                          "match":{
                              "price":1999.00
                          }
                      }
                  ],
                  "filter":{
                      "range":{
                          "price":{
                              "gt":5000
                          }
                      }
                  }
              }
          }
      }
  • 全文檢索匹配(分詞)(match)

      GET請求
      http://127.0.0.1:9200/shopping/_search
      {
          "query":{
              "match":{
                  "category": "小華"
              }
          }
      }
  • 完全匹配(match_phrase)

      GET請求
      http://127.0.0.1:9200/shopping/_search
      {
          "query":{
              "match_phrase":{
                  "category": "小華"
              }
          }
      }
  • 高亮查詢 (hightlight,對結果加html標籤)

      GET請求
      http://127.0.0.1:9200/shopping/_search
      {
          "query":{
              "match_phrase":{
                  "category": "小華"
              }
          },
          "hightlight":{
              "fields":{
                  "category":{}
              }
          }
      }

    聚合查詢

  • 返回統計資料和原始資料

    
      GET請求
      http://127.0.0.1:9200/shopping/_search
      { 
          "aggs":{ #聚合操作
              "price_group":{ #名稱,隨意起名
                  "terms":{ #分組
                      "field":"price" #分組欄位
                  }
              }
          }}
    
  • 關閉原始資料(size)

      GET請求
      http://127.0.0.1:9200/shopping/_search
    
          { 
          "aggs":{ #聚合操作
              "price_group":{ #名稱,隨意起名
                  "terms":{ #分組
                      "field":"price" #分組欄位
                  }
              }
          }"size":0
      }
  • 平均值

      GET請求
      http://127.0.0.1:9200/shopping/_search
    
          { 
          "aggs":{ #聚合操作
              "price_avg":{ #名稱,隨意起名
                  "age":{ #平均值
                      "field":"price" #分組欄位
                  }
              }
          }"size":0
      }

    對映關係

  • 建立對映

      PUT請求
      http://127.0.0.1:9200/user/_mapping
      { 
          "properties":{
              "name":{
                  "type":"text", #全文檢索分詞查詢
                  "index":true
              },
              "sex":{
                  "type":"keyword",#完全查詢
                  "index":true
              },
              "tel":{
                  "type":"keyword",#不能查詢
                  "index":false
              }
          }
      }
  • 查詢對映

      GET請求
      http://127.0.0.1:9200/user/_mapping
  • 增加資料

      PUT請求
      http://127.0.0.1:9200/user/_create/1001
      {
          name:"小米",
          sex:"男的",
          tel:"10010"
      }
  • 查詢資料

      GET請求
      http://127.0.0.1:9200/user/_search
      {
          "query":{
              "match": {
                  name:"小"
              }
          }
      }
      GET請求
      http://127.0.0.1:9200/user/_search
      {
          "query":{
              "match": {
                  sex:"男" #查詢不到,必須輸入男的
              }
          }
      }
      #不支援查詢
      GET請求
      http://127.0.0.1:9200/user/_search
      {
          "query":{
              "match": {
                  tel:"10010" 
              }
          }
      }
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章