首页 > 其他分享 >(20)go-micro微服务Elasticsearch使用

(20)go-micro微服务Elasticsearch使用

时间:2023-01-25 16:34:20浏览次数:56  
标签:索引 micro Elasticsearch go elasticsearch docker 节点 es

目录

一 Elasticsearch介绍

  • Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”。

  • Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elasticsearch 中。Kibana 使您能够以交互方式探索、可视化和分享对数据的见解,并管理和监控堆栈。Elasticsearch 是索引、搜索和分析的地方。

  • Elasticsearch 为所有类型的数据提供近乎实时的搜索和分析。无论您拥有结构化或非结构化文本、数字数据还是地理空间数据,Elasticsearch 都能以支持快速搜索的方式高效地存储和索引它。您可以超越简单的数据检索和聚合信息来发现数据中的趋势和模式。随着您的数据和查询量的增长,Elasticsearch 的分布式特性使您的部署能够随之无缝增长。

二 Elasticsearch的主要功能及应用场景

1.Elasticsearch 主要具有如下功能:

  • 海量数据的分布式存储以及集群管理,能达到服务与数据的高可用以及系统架构的水平扩展。
  • 近实时的数据搜索能力,能够对结构化数据、全文数据、地理位置等类型的数据进行处理和分析。
  • 海量数据的实时分析功能和各种强大的聚合功能。

2.Elasticsearch 的主要应用场景如下:

  • 网站搜索、代码搜索等。

  • 日志管理、日志分析、日志安全指标监控、应用性能监控、Web 抓取舆情分析等。

  • 利用 Elasticsearch 的高性能和分布式部署特征,可以对海量的业务订单数据进行分析和处理,还能利用 Elasticsearch 的聚合函数和分析能力统计出各种各样的数据报表。

三 Elasticsearch核心概念

  1. cluster:代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。

  2. shards:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。

  3. replicas:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。

  4. recovery:代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。

  5. river:代表es的一个数据源,也是其它存储方式(如:数据库)同步数据到es的一个方法。它是以插件方式存在的一个es服务,通过读取river中的数据并把它索引到es中,官方的river有couchDB的,RabbitMQ的,Twitter的,Wikipedia的。

  6. gateway:代表es索引快照的存储方式,es默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。gateway对索引快照进行存储,当这个es集群关闭再重新启动时就会从gateway中读取索引备份数据。es支持多种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop的HDFS和amazon的s3云存储服务。

  7. discovery.zen:代表es的自动发现节点机制,es是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。

  8. Transport:代表es内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)、thrift、servlet、memcached、zeroMQ等的传输协议(通过插件方式集成)。

四 Elasticsearch安装

1.拉取镜像

docker pull elasticsearch:7.9.3

2.运行命令

docker run --name elasticsearch7.9.3 -d -e ES_JAVA_OPTS="-Xmx256m -Xms256m" --net host -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.9.3

3.查看是否运行

docker ps

五 Elasticsearch使用

  • 为了方便同时使用ELK,新建一个目录docker-elk

  • 在docker-elk目录下新建elasticsearch/config/elasticsearch.yml

  • elasticsearch.yml,输入以下代码:

cluster.name: "cluster"
network.host: 0.0.0.0

xpack.license.self_generated.type: trail
xpack.security.enabled: true
xpack.monitoring.collection.enabled: true
  • 在docker-elk目录下建立一个docker-stack.yml,同时启动ELK

  • 输入以下代码:

version: '3.3'
services:
  elasticsearch:
    image: elasticsearch:7.9.3
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearchs/config/elasticsearch.yml
    environment:
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
      ELASTIC_PASSWORD: imoocpwd
      discovery.type: single-node
      network.publish_host: _eth0_
  • 启动命令:
docker-compose -f docker-stack.yml up -d
  • 至此,Elasticsearch使用至此完成

六 最后

  • 至此,go-micro微服务项目Elasticsearch使用工作就正式完成。

  • 接下来就开始logstash使用的代码编写了,希望大家关注博主和关注专栏,第一时间获取最新内容,每篇博客都干货满满。

欢迎大家加入 夏沫の梦的学习交流群 进行学习交流经验,点击 夏沫の梦学习交流

标签:索引,micro,Elasticsearch,go,elasticsearch,docker,节点,es
From: https://www.cnblogs.com/qi66/p/17067032.html

相关文章

  • typora+picGo腾讯云图床设置
    前言需求原因​ 大部分人在写博客都是使用的较为好看的markdown格式,而我们在本地编写markdown时其中的图片一般都是截图后粘贴的。这些图片其实都保存在了本地文件夹中,ma......
  • Argo CD应用管理
    一个云原生应用程序通常包含多种Kubernetes资源类型,例如Deployment、ReplicaSet、Pod、PersistVolume、Service等,但在Kubernetes的原生能力下,并没有一个完整的概念可以直观......
  • Argo CD应用的更新和回滚
    ArgoCD是用于Kubernetes的声明式GitOps应用持续交付工具,相比于传统的DevOps应用持续交付模型,GitOps模型下的应用更新和回滚更加高效,那么在使用ArgoCD更新、交付应用之前,......
  • Argo CD核心概念及架构设计
    ArgoCD的核心概念Application(应用):一组Kubernetes资源清单的统一定义,属于CRD(CustomResourceDefinition,定制资源定义)资源。Applicationsourcetype(应用的源仓库类型):目......
  • Argo CD安装配置
    安装ArgoCD单独为ArgoCD创建命名空间argocd,命令如下所示。$kubectlcreatenamespaceargocdnamespace/argocdcreated使用以下命令将ArgoCD部署到argocd命名空间下......
  • 在Django中显示MySQL语句
    在setting中添加以下内容LOGGING={'version':1,'disable_existing_loggers':False,'handlers':{'console':{'level':'DEBUG......
  • 适合编程初学者的开源云笔记系统(Go语言版)
    目标为编程初学者打造入门学习项目,使用各种主流编程语言来实现。让想学编程的,一个都不落下。上述基本涵盖了当前编程开发所有主流语言。左侧为前端版本:安卓、iOS、鸿蒙......
  • django
    djangoserializer中不仅可以定义返回的字段,也可以定义相关重写的方法。对于不同的数据权限,可以定义不同的数据集feildsets来指向不同的用户拥有的权限。设置全局权限在s......
  • Python3配合Django来调用钉钉在线api实时监测员工考勤打卡情况
    基本上钉钉(dingding)作为一个远程办公平台来用的话,虽然差强人意,但是奈何市面上没有啥更好的选择,矬子里拔将军,也还是可以凑合用的,不过远程办公有个问题,就是每天需要检查员......
  • (19)go-micro微服务filebeat收集日志
    目录一Filebeat介绍二FileBeat基本组成三FileBeat工作原理四Filebeat如何记录文件状态:五Filebeat如何保证事件至少被输出一次六安装Filebeat七使用Filebeatfilebea......