【Elasticsearch】【基础】操作使用

举报
huahua.Dr 发表于 2021/06/11 16:41:11 2021/06/11
【摘要】 使用环境:kibana - Dev Tools包含了全部基本的es增删改查相关操作,其中还有一些高级检索操作

使用环境:kibana - Dev Tools

包含了全部基本的es增删改查相关操作,其中还有一些高级检索操作


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

# 2. 创建索引,语法:PUT /索引
PUT /huahua_index_1

# 3. 删除索引,语法:DELETE /索引
DELETE /huahua_index_1

# 4. 新增/更新文档,语法:PUT /索引/类型/文档id
PUT /huahua_index_1/blog/3
{
  "blog_name": "huahuaBolg3",
  "article_qty": 3,
  "age" : 3,
  "about":"this only a blog",
  "interests": ["java","python","linux"]
}

# 5. 删除文档,语法:DELETE /索引/类型/文档id
DELETE /huahua_index_1/blog/3

# 6. 简单搜索(使用查询字符串参数),查询指定索引和类型下的文档记录(默认返回前10笔记录),语法:GET /索引/类型/_search
GET /huahua_index_1/blog/_search

# 6.1 简单搜索(使用查询字符串参数),查询指定文档ID记录,语法: GET /索引/类型/文档ID
GET /huahua_index_1/blog/1

# 7.轻量搜索(使用查询字符串参数),将查询数据进行字段筛选,语法:GET /索引/类型/_search?q=字段key:字段value
GET /huahua_index_1/blog/_search?q=age:7 # 查询age等于7的所有文档

# 7.1 轻量搜索(使用查询字符串参数),将查询数据进行字段筛选并按字段排序,语法:GET /索引/类型/_search?q=字段key:字段value&sort=字段key:desc/asc
GET /huahua_index_1/blog/_search?q=blog_name:huahuaBolg7&sort=age:desc

# 8. 高级DSL搜索(使用查询body),使用match查询所有文档记录,语法:
# GET /索引/类型/_search
#  {
#   "query":{
#     "match_all": {}
#   }
# }
GET /huahua_index_1/blog/_search
{
   "query":{
     "match_all": {}
   }
 }
# 8.1 查询结果中指定返回条数
GET /huahua_index_1/blog/_search
{
   "query":{
     "match_all": {}
   },
   "size":5
 }
# 8.2 分页查询
 GET /huahua_index_1/blog/_search
{
   "query":{
     "match_all": {}
   },
   "from":5,
   "size":1
 }
# 8.3 查询结果中返回指定字段
GET /huahua_index_1/blog/_search
{
   "query":{
     "match_all": {}
   },
   "_source":["blog_name","age"]
 }
# 8.4 关键字查询,使用term
GET /huahua_index_1/blog/_search
{
   "query":{
     "term": {
       "age": {
         "value": "22"
       }
     }
   }
 }
# 8.4 范围查询,使用range,gt大于,lt小于
GET /huahua_index_1/blog/_search
{
   "query":{
     "range": {
       "age": {
         "gt": 6,
         "lt": 23
       }
     }
   }
 }
# 8.6 前缀查询,使用prefix,查询包含分词为前缀的文档记录
GET /huahua_index_1/blog/_search
{
   "query":{
     "prefix": {
       "about": {
         "value": "hua"
       }
     }
   }
 }
# 8.7 通配符查询,使用wildcard
GET /huahua_index_1/blog/_search
{
   "query":{
     "wildcard": {
       "blog_name": {
         "value": "hua*"
       }
     }
   }
 }
# 8.8 模糊查询,使用fuzzy,也是按照分词来查询
GET /huahua_index_1/blog/_search
{
   "query":{
     "fuzzy": {
       "about": {
         "value": "huahua"
       }
     }
   }
 }
# 8.9 根据指定字段查询,使用multi_match
GET /huahua_index_1/blog/_search
{
   "query":{
     "multi_match": {
       "query": "华", 
       "fields":["blog_name","about"] 
     }
   }
 }
 
# 9. 高级DSL搜索(使用查询body),使用match/match_phrase将查询数据进行字段筛选(包含精准检索和全文检索),语法:
# GET /索引/类型/_search
#  {
#   "query":{
#     "match/match_phrase": {
#       "字段key": "字段value"
#     }
#   }
# }
# 9.1 精准检索,查询字段age=7的所有文档记录
 GET /huahua_index_1/blog/_search
  {
   "query":{
     "match": {
       "age": "7" 
     }
   }
 }
# 9.2 全文检索,在ES的映射类型中keyword , date ,integer, long , double , boolean or ip这些类型不分词,只有text类型分词。:about字段包含huahua和华等分词的所有文档记录,查询结果按照匹配程度进行排序评分,在_score字段记录评分
 GET /huahua_index_1/blog/_search
  {
   "query":{
     "match": {
       "about": "huahua 华" 
     }
   }
 }
# 9.3 短语检索,查询匹配连续的短语
 GET /huahua_index_1/blog/_search
  {
   "query":{
     "match_phrase": {
       "about": "huahua is human" 
     }
   }
 }
  GET /huahua_index_1/blog/_search
  {
   "query":{
     "match_phrase_prefix": {
       "about": "huahua is " 
     }
   }
 }
# 10. 高级DSL搜索(使用查询body),使用match/match_phrase/highlight将结果中匹配到的关键字高亮
 GET /huahua_index_1/blog/_search
  {
   "query":{
     "match_phrase": {
       "about": "huahua is human" 
     }
   },
   "highlight":{
     "fields":{
       "about":{}
     }
   }
 }


# 11. 高级DSL搜索(使用查询body),使用bool和fiter将查询数据进行组合筛选,实现复杂筛选,语法:
# GET /索引/类型/_search
#  {
#   "query":{
#     "bool": {
#       "must/must_not": {查询条件},
#       "filter": {过滤条件}
#     }
#   }
# }
# 12. 使用bool的must筛选指定的字段名,同时使用filter进行范围筛选,也可以分开使用
GET /huahua_index_1/blog/_search
{
  "query":{
    "bool": {
      "must":{
        "match":{
          "blog_name":"huahuaBolg7"
        }
      },      
      "filter":{
        "range":{
          "age":{"gt":7}
        }
      }
    }
  }  
}

# 13. 高级DSL搜索(使用查询body),使用聚合aggs在查询数据中生成复杂的分析统计,像sql中的group by但功能更强大
# 如果聚合的字段被禁止聚合操作请执行下面语句,开启聚合功能,不过会增加内存的消耗
PUT /huahua_index_1/_mapping
{
  "properties":{
    "interests":{
      "type":"text",
      "fielddata":true
    }
  }
}

 GET /huahua_index_1/blog/_search
 {
   "query":{
     "match": {
       "blog_name": "huahuaBolg7"
     }
   },
   "aggs":{
     "all_interests":{
       "terms":{
         "field": "interests"
       },
       "aggs":{
         "avg_age":{
           "avg":{
             "field": "age"
           }
         }
       }
     }
   }
 }
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。