Kibana Web页面操作Elastic Search

一 准备工作

es版本6.3.1 kibana 版本6.3.1
启动三台ES节点,组建成Es集群
启动kibana 连接上Es
访问kibana提供的Web页面
http://hadoop102:5601
kibana dev-Tools面板

二 接口Restfull Api

2.1 查看es中有哪些索引

GET /_cat/indices?v

查询结果
表头含义:
health green(集群完整) yellow(单点正常、集群不完整) red(单点不正常)
status 是否能使用
index 索引名
uuid 索引统一编号
pri 主节点几个
rep 从节点几个
docs.count 文档数
docs.deleted 文档被删了多少
store.size 整体占空间大小
pri.store.size 主节点占

2.2 创建索引(index)类似于数据库中的database

PUT /index_movie

2.3 删除索引(index)

DELETE /index_movie

2.4 新增文档

PUT index_movie/movie/1
{
  "title":"zhanlang",
  "score":9.2,
  "author":[
    {"name":"wujing"},
    {"sex":"man"}
  ]
}

注意:

  • 如果之前没建过 index 或者 type,es 会自动创建。
  • type类似于数据库中表,6.x一个Index下只允许创建一个type
  • Id可以不指定,不指定会默认生成

2.5 搜索 type 全部数据

Get index_movie/movie/_search

2.6 根据指定的Id进行搜索

GET index_movie/movie/1

2.7 修改 document

2.7.1 覆盖修改(id 相同)

使用PUT方式ID相同,将原数据覆盖

PUT index_movie/movie/1
{
  "title":"zhanlang"
  
}

2.7.2 修改单个字段

POST index_movie/movie/1/_update
{
  "doc": {
  "title":"zhanlang",
  "score":9.2,
  "author":[
    {"name":"wujing"},
    {"sex":"man"}
  ]  
  }
}

注意:

  • 修改后面需要加上 _update
  • 修改的数据需要被 “doc”:{}包裹
  • 使用POST方式

2.8 删除一个 document

DELETE index_movie/movie/1

2.9 按条件查询全部

GET index_movie/movie/_search
{
  "query": {
    "match_all": {} 
  }
}

2.10 按照字段的分词查询

再插入两条数据:

POST index_movie/movie/
{
  "title":"honghai  xingdong ",
  "score":9.2,
  "author":[
    {"name":"zhangsan sange","sex":"man"},
     {"name":"lisi sige","sex":"man"}
  ]
}
POST index_movie/movie/
{
  "title":"honghai1  xingdong1 ",
  "score":9.2,
  "author":[
    {"name":"zhangsan sange","sex":"man"},
     {"name":"lisi sige","sex":"man"}
  ]
}
GET index_movie/movie/_search
{
  "query": {
    "match": {
      "title": "honghai"
    }
    
  }
  
}

注意:

  • es中默认会为字段添加索引
  • 字段类型为text时会进行分词
  • 英文分词,按照非单词字符以及语气词进行切分
  • 中文分词,需安装对应的分词器
  • index_movie/movie/_search 指定查询的对应的Index和type
  • 发送json 格式进行查询 条件在query:{}对象中

2.11 按照分词子属性查询

查询出演员中包含zhangsan 字样的Document

GET index_movie/movie/_search
{
  "query": {
    "match": {
      "author.name": "zhangsan"
    }
  }
}

2.12 按照短语查询

按照短语查询的意思是指, 匹配某个 field 的整个内容, 不再利用分词技术

GET index_movie/movie/_search
{
  "query": {
    "match_phrase": {
      "title": "honghai"
    }
  }
}

注意:

  • 会当成一个整体进行匹配,也会匹配出结果,只是匹配度不高
  • 完全匹配,匹配度为1 局部匹配的时候分数会小

2.13 模糊查询

校正匹配分词,当一个单词都无法准确匹配,es 通过一种算法对非常接近的单词也给与一定的评分,能够查询出来,但是消耗更多的性能.

GET index_movie/movie/_search
{
  "query": {
    "fuzzy": {
      "title":"honghai"
    }
    
  }
}

2.14 过滤(查询后过滤)

查询出主题包含honghai 且演员为man的Document

GET index_movie/movie/_search
{
  "query": {
    "match": {
     "title": "honghai"
    }
    
  }
  , "post_filter": {
    "term": {
      "author.sex": "man"
    }
    
  }
}

2.15 先过滤再查询

查询演员包含wujing 电影名字为wujing 且 分数为9.2分的数据

GET index_movie/movie/_search
{
  "query": {
    "bool": {
      "filter": [
        {"term": 
          {"title": "zhanlang"}
        },
        {
          "term":
            {"score": 9.2}
        }
        ]
      
     , "must": [
       {
        "match": {
          "author.name": "wujing"
        } 
       }
     ]
      
    }
    
  }

}

2.16 范围查询

gt大于
lt小于
gte大于等于
lte小于等于
GET /index_movie/movie/_search
{
  "query": {
    "bool": {
      "filter": {
        "range": {
          "score": {
            "gte": 9,
            "lte": 10
          }
        }
        
      }
      
    }
  }
}

2.17 排序查询

查询title包含honghai 且按照评分升序

GET /index_movie/movie/_search
{
  "query": {
    
    "match": {
      "title": "honghai"
    }
  }
  , "sort": [
    {
      "score": {
        "order": "asc"
      }
    }
  ]
}

2.18 分页查询

match_all 匹配全部 from 从第几条开始查询 size每页多少条记录
实际查询时,应该动态计算(currentPage-1)*size

GET /index_movie/movie/_search
{
  "from": 1,
  "size": 2
  , "query": {
    "match_all": {}
  }
}

2.18 指定查询的字段

GET /index_movie/movie/_search
{
  "query": {"match_all": {}}
    , "_source": ["title", "score"]
  
}
  • 通过_source指定需要查询的字段
  • 如果是单个字段只需要 “_source”: “title”

2.19 聚合

插入多条数据

GET /index_movie/movie/_search
{
 
  
  "aggs": {
    "groupby_author_name": {
      "terms": {
        "field": "author.name.keyword"
        , "size": 4
      }
    }
  }
}

  • groupby_author_name 分组的名字任意起的
  • field 指定分组字段(分组字段不能是TEXT类型)
  • size 最大分为几组

2.20 分组集合求平均值,并按照平均值升序

GET /index_movie/movie/_search
{
  "aggs": {
    "groupby_author_name": {
      "terms": {
        "field": "author.name.keyword"
        , "size": 4,
        "order": {
          "avg_score": "asc"
        }
      },
     "aggs": {
       "avg_score": {
         "avg": {
           "field": "score"
         }
       }
     }
    }
  }
}

注:

  • 指定分组的名字 groupby_author_name
  • field 指定分组字段
  • size 指定最大分组数为4
  • order 指定排序
  • avg_score 为平均值的名
  • 指定avg_score 平均值的别名
  • avg 聚合行为
  • field 指定对哪里求平均值

三 ElasticSearch 中的分词器

Elasticsearch自带的分词器
自带的分词器
中文分析器
中文分词器介绍

3.1 安装IK中文分词器

官方下载地址:
https://github.com/medcl/elasticsearch-analysis-ik/releases
解压下载后的jar包
官方使用文档:
https://github.com/medcl/elasticsearch-analysis-ik

unzip  elasticsearch-analysis-ik-6.3.1.zip -d /opt/module/elasticsearch-6.3.1/plugins/ik

注:需解压到ElasticSearch安装目录的plugins目录,分发文件到其它es节点,重新启动es集群

3.2 测试

3.2.1 使用默认分词器

GET /index_person/_analyze
{
  "analyzer": "ik_smart",
  "text": "大数据"
}

结果:
默认分词器

3.2.2 使用Ik分词器

ik_smart

GET /index_person/_analyze
{
  "analyzer": "ik_smart",
  "text": "大数据"
}

结果:
使用Ik分词器
ik_max_word:

GET /index_person/_analyze
{
  "analyzer": "ik_max_word",
  "text": "大数据"
}

查询结果:
在这里插入图片描述
分词类型
ik_max_word:最大分词
ik_smart:最小分词

四 查看mappings手动指定mapping

4.1 查看mapping

GET /index_person/person/_mapping
{
  "index_person": { // Index名
    "mappings": { 
      "person": { // type 名称
        "properties": { // 属性名
          "addr": {  // addr字段
            "type": "text",  // 类型text
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "name": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "text": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          }
        }
      }
    }
  }
}

支持的类型
默认类型推断

true/false → boolean
1020  →  long
20.1 → double
“2018-02-01” → date
“hello world” → text +keyword

在一些特殊情况下,不需要对列进行分词,所以可以手动只当mapping

4.2 手动指定mapping

PUT movie_chn
{
  "mappings": {
    "movie":{
      "properties": {
        "id":{
          "type": "long"
        },
        "name":{
          "type": "text"
          , "analyzer": "ik_smart"
        },
        "doubanScore":{
          "type": "double"
        },
        "actorList":{
          "properties": {
            "id":{
              "type":"long"
            },
            "name":{
              "type":"keyword"
            }
          }
        }
      }
    }
  }
}

插入数据:

PUT /movie_chn/movie/1
{ "id":1,
  "name":"红海行动",
  "doubanScore":8.5,
  "actorList":[  
    {"id":1,"name":"张译"},
    {"id":2,"name":"海清"},
    {"id":3,"name":"张涵予"}
   ]
}
PUT /movie_chn/movie/2
{
  "id":2,
  "name":"湄公河行动",
  "doubanScore":8.0,
  "actorList":[  
    {"id":3,"name":"张涵予"}
  ]
}

PUT /movie_chn/movie/3
{
  "id":3,
  "name":"红海事件",
  "doubanScore":5.0,
  "actorList":[  
    {"id":4,"name":"张晨"}
  ]
}

查询数据:

GET /movie_chn/movie/_search
{
  "query": {
    "match": {
      "name": "红海"
    }
  }
  
}

手动指定mapping,指定分词器进行查询

微服务是什么?微服务是用于构建应用程序的架构风格,一个大的系统可由一个或者多个微服务组成,微服务架构可将应用拆分成多个核心功能,每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作和出现故障的时候不会相互影响。为什么要用微服务?单体架构下的所有代码模块都耦合在一起,代码量大,维护困难,想要更新一个模块的代码,也可能会影响其他模块,不能很好的定制化代码。微服务中可以有java编写、有Python编写的,他们都是靠restful架构风格统一成一个系统的,所以微服务本身与具体技术无关、扩展性强。大型电商平台微服务功能图为什么要将SpringCloud项目部署到k8s平台?SpringCloud只能用在SpringBoot的java环境中,而kubernetes可以适用于任何开发语言,只要能被放进docker的应用,都可以在kubernetes上运行,而且更轻量,更简单。SpringCloud很多功能都跟kubernetes重合,比如服务发现,负载均衡,配置管理,所以如果把SpringCloud部署到k8s,那么很多功能可以直接使用k8s原生的,减少复杂度。Kubernetes作为成熟的容器编排工具,在国内外很多公司、世界500强等企业已经落地使用,很多中小型公司也开始把业务迁移到kubernetes中。kubernetes已经成为互联网行业急需的人才,很多企业都开始引进kubernetes技术人员,实现其内部的自动化容器云平台的建设。对于开发、测试、运维、架构师等技术人员来说k8s已经成为的一项重要的技能,下面列举了国内外在生产环境使用kubernetes的公司: 国内在用k8s的公司:阿里巴巴、百度、腾讯、京东、360、新浪、头条、知乎、华为、小米、富士康、移动、银行、电网、阿里云、青云、时速云、腾讯、优酷、抖音、快手、美团等国外在用k8s的公司:谷歌、IBM、丰田、iphone、微软、redhat等整个K8S体系涉及到的技术众多,包括存储、网络、安全、监控、日志、DevOps、微服务等,很多刚接触K8S的初学者,都会感到无从下手,为了能让大家系统地学习,克服这些技术难点,推出了这套K8S架构师课程。Kubernetes的发展前景 kubernetes作为炙手可热的技术,已经成为云计算领域获取高薪要掌握的重要技能,在招聘网站搜索k8s,薪资水平也非常可观,为了让大家能够了解k8s目前的薪资分布情况,下面列举一些K8S的招聘截图: 讲师介绍:  先超容器云架构师、IT技术架构师、DevOps工程师,曾就职于世界500强上市公司,拥有多年一线运维经验,主导过上亿流量的pv项目的架构设计和运维工作;具有丰富的在线教育经验,对课程一直在改进和提高、不断的更新和完善、开发更多的企业实战项目。所教学员遍布京东、阿里、百度、电网等大型企业和上市公司。课程学习计划 学习方式:视频录播+视频回放+全套源码笔记 教学服务:模拟面试、就业指导、岗位内推、一对一答疑、远程指导 VIP终身服务:一次购买,终身学习课程亮点:1. 学习方式灵活,不占用工作时间:可在电脑、手机观看,随时可以学习,不占用上班时间2.老师答疑及时:老师24小时在线答疑3. 知识点覆盖全、课程质量高4. 精益求精、不断改进根据学员要求、随时更新课程内容5. 适合范围广,不管你是0基础,还是拥有工作经验均可学习:0基础1-3年工作经验3-5年工作经验5年以上工作经验运维、开发、测试、产品、前端、架构师其他行业转行做技术人员均可学习课程部分项目截图   课程大纲 k8s+SpringCloud全栈技术:基于世界500强的企业实战课程-大纲第一章 开班仪式老师自我介绍、课程大纲介绍、行业背景、发展趋势、市场行情、课程优势、薪资水平、给大家的职业规划、课程学习计划、岗位内推第二章 kubernetes介绍Kubernetes简介kubernetes起源和发展kubernetes优点kubernetes功能kubernetes应用领域:在大数据、5G、区块链、DevOps、AI等领域的应用第三章  kubernetes中的资源对象最小调度单元Pod标签Label和标签选择器控制器Replicaset、Deployment、Statefulset、Daemonset等四层负载均衡器Service第四章 kubernetes架构和组件熟悉谷歌的Borg架构kubernetes单master节点架构kubernetes多master节点高可用架构kubernetes多层架构设计原理kubernetes API介绍master(控制)节点组件:apiserver、scheduler、controller-manager、etcdnode(工作)节点组件:kube-proxy、coredns、calico附加组件:prometheus、dashboard、metrics-server、efk、HPA、VPA、Descheduler、Flannel、cAdvisor、Ingress     Controller。第五章 部署多master节点的K8S高可用集群(kubeadm)第六章 带你体验kubernetes可视化界面dashboard在kubernetes中部署dashboard通过token令牌登陆dashboard通过kubeconfig登陆dashboard限制dashboard的用户权限在dashboard界面部署Web服务在dashboard界面部署redis服务第七章 资源清单YAML文件编写技巧编写YAML文件常用字段,YAML文件编写技巧,kubectl explain查看帮助命令,手把手教你创建一个Pod的YAML文件第八章 通过资源清单YAML文件部署tomcat站点编写tomcat的资源清单YAML文件、创建service发布应用、通过HTTP、HTTPS访问tomcat第九章  kubernetes Ingress发布服务Ingress和Ingress Controller概述Ingress和Servcie关系安装Nginx Ingress Controller安装Traefik Ingress Controller使用Ingress发布k8s服务Ingress代理HTTP/HTTPS服务Ingress实现应用的灰度发布-可按百分比、按流量分发第十章 私有镜像仓库Harbor安装和配置Harbor简介安装HarborHarbor UI界面使用上传镜像到Harbor仓库从Harbor仓库下载镜像第十一章 微服务概述什么是微服务?为什么要用微服务?微服务的特性什么样的项目适合微服务?使用微服务需要考虑的问题常见的微服务框架常见的微服务框架对比分析第十二章 SpringCloud概述SpringCloud是什么?SpringCloud和SpringBoot什么关系?SpringCloud微服务框架的优缺点SpringCloud项目部署到k8s的流程第十三章 SpringCloud组件介绍服务注册与发现组件Eureka客户端负载均衡组件Ribbon服务网关Zuul熔断器HystrixAPI网关SpringCloud Gateway配置中心SpringCloud Config第十四章 将SpringCloud项目部署到k8s平台的注意事项如何进行服务发现?如何进行配置管理?如何进行负载均衡?如何对外发布服务?k8s部署SpringCloud项目的整体流程第十五章 部署MySQL数据库MySQL简介MySQL特点安装部署MySQL在MySQL数据库导入数据对MySQL数据库授权第十六章 将SpringCLoud项目部署到k8s平台SpringCloud的微服务电商框架安装openjdk和maven修改源代码、更改数据库连接地址通过Maven编译、构建、打包源代码在k8s中部署Eureka组件在k8s中部署Gateway组件在k8s中部署前端服务在k8s中部署订单服务在k8s中部署产品服务在k8s中部署库存服务第十七章 微服务的扩容和缩容第十八章 微服务的全链路监控什么是全链路监控?为什么要进行全链路监控?全链路监控能解决哪些问题?常见的全链路监控工具:zipkin、skywalking、pinpoint全链路监控工具对比分析第十九章 部署pinpoint服务部署pinpoint部署pinpoint agent在k8s中重新部署带pinpoint agent的产品服务在k8s中重新部署带pinpoint agent的订单服务在k8s中重新部署带pinpoint agent的库存服务在k8s中重新部署带pinpoint agent的前端服务在k8s中重新部署带pinpoint agent的网关和eureka服务Pinpoint UI界面使用第二十章 基于Jenkins+k8s+harbor等构建企业级DevOps平台第二十一章 基于Promethues+Alert+Grafana搭建企业级监控系统第二十二章 部署智能化日志收集系统EFK 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Master_slaves

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值