ES 花樣查詢

二話不說上代碼java

 #建立索引庫並指定索引類型
 PUT /test
 {
   "mappings": {
     "properties": {
       "name":{
         "type": "text"
       },
       "age":{
         "type": "integer"
       },
       "birthday":{
         "type": "date"
       }
     }
   }
 }
 
 #添加一條文檔
 PUT /test/_doc/1
 {
   "name":"彼岸舞",
   "age":12,
   "birthday":"1999-11-11"
 }
 
 #暴力修改
 PUT /test/_doc/1
 {
   "name":"彼岸舞的博客",
   "age":12,
   "birthday":"1999-11-11"
 }
 
 #更新修改
 POST /test/_doc/1/_update
 {
   "doc":{
     "age":11
   }
 }
 
 #刪除索引庫
 DELETE test
 
 #建立索引庫並添加數據
 PUT /dance/_doc/1
 {
   "name":"藍貝兒",
   "age":18,
   "desc":"不明因此的小迷糊",
   "tags":["小仙女","小吃貨","時尚達人"]
 }
 
 PUT /dance/_doc/2
 {
   "name":"夏天",
   "age":26,
   "desc":"小清新,萌萌的",
   "tags":["萌萌的","小吃貨","暖男"]
 }
 
 PUT /dance/_doc/3
 {
   "name":"彼岸舞",
   "age":18,
   "desc":"走投無路的弟弟",
   "tags":["技術宅","二次元","碼農"]
 }
 
 PUT /dance/_doc/4
 {
   "name":"彼岸花",
   "age":18,
   "desc":"走投無路的妹妹",
   "tags":["小仙女","妖嬈","小吃貨"]
 }
 
 PUT /dance/_doc/5
 {
   "name":"彼岸草",
   "age":3,
   "desc":"走投無路的姐姐",
   "tags":["御姐","時尚達人","大懶貨"]
 }
 
 
 #根據ID查詢
 
 GET dance/_doc/_search?q=name:彼岸舞
 
 #指定字段匹配
 
 GET dance/_doc/_search
 {
   "query":{
     "match":{
       "name":"彼岸"
     }
   }
 }
 
 #查詢指定字段
 
 GET dance/_doc/_search
 {
   "query":{
     "match":{
       "name":"彼岸"
     }
   },
   "_source":["name","desc"]
 }

#指定字段排序
GET dance/_doc/_search
{
  "query": {
    "match": {
      "name": "彼岸"
    }
  },
  "sort": [
    {
      "age": {
        "order": "asc"
      }
    }
  ]
}

#分頁查詢
GET dance/_doc/_search
{
  "query": {
    "match": {
      "name": "彼岸"
    }
  },
  "from": 0,
  "size": 1
}

#多條件匹配 and關聯
GET dance/_doc/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "彼岸"
          }
        },
        {
          "match": {
            "age": 3
          }
        }
      ]
    }
  }
}

#多條件匹配 or關聯
GET dance/_doc/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "name": "彼岸舞"
          }
        },
        {
          "match": {
            "age": 18
          }
        }
      ]
    }
  }
}

#多條件匹配 取非
GET dance/_doc/_search
{
  "query": {
    "bool": {
      "must_not": [
        {
          "match": {
            "age": 18
          }
        }
      ]
    }
  }
}

#範圍 lt 小於 lte 小於等於 gt 大於 gte 大於等於
#多條件匹配 數據過濾
GET dance/_doc/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "彼岸"
          }
        }
      ],
      "filter": {
        "range": {
          "age": {
            "lt": 10
          }
        }
      }
    }
  }
}

#空格分割多條件
GET /_search
{
  "query": {
    "match": {
      "tags": "小仙女 小吃貨"
    }
  }
}

#精確查詢
#term 查詢是直接經過倒排索引指定的詞條進行精確查找
#關於分詞
#term 直接查詢精確的
#match 會使用分詞器(先分析文檔,而後經過分析的文檔進行查詢)
#兩個類型(重點)
#text keyword
#text 會被分詞器解析 keyword不會被分詞器解析

#建立索引庫指定規則
PUT testdb
{
  "mappings": {
    "properties": {
      "name":{
        "type": "text"
      },
      "desc":{
        "type": "keyword"
      }
    }
  }
}

#添加測試數據

PUT testdb/_doc/1
{
  "name":"彼岸舞的博客園 java name",
  "desc":"彼岸舞的博客園 java desc"
}

PUT testdb/_doc/2
{
  "name":"彼岸舞的博客園 java name",
  "desc":"彼岸舞的博客園 java desc code"
}

#嘗試分詞器
GET _analyze
{
  "analyzer": "keyword",
  "text": "彼岸舞的博客園 java name"
}

GET _analyze
{
  "analyzer": "standard",
  "text": "彼岸舞的博客園 java name"
}

#檢索測試 會被分詞
GET testdb/_search
{
  "query": {
    "term": {
      "name": "java"
    }
  }
}

#不會被分詞
GET testdb/_search
{
  "query": {
    "term": {
      "desc": "彼岸舞的博客園 java desc code"
    }
  }
}

#高亮查詢
GET testdb/_search
{
  "query": {
    "match": {
      "name": "彼岸舞"
    }
  },
  "highlight": {
    "fields": {
      "name": {}
    }
  }
}

#自定義高亮包裹標籤
GET testdb/_search
{
  "query": {
    "match": {
      "name": "彼岸舞"
    }
  },
  "highlight": {
    "pre_tags": "<span class='key' style='color:red;'>",
    "post_tags": "</span>", 
    "fields": {
      "name": {}
    }
  }
}

本身去試,從上往下網絡

做者:彼岸舞app

時間:2020\09\10post

內容關於:ElasticSearch測試

本文來源於網絡,只作技術分享,一律不負任何責任spa

相關文章
相關標籤/搜索