前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ELK的理论杂项知识

ELK的理论杂项知识

作者头像
趣学程序-shaofeer
发布2019-09-25 09:54:02
3480
发布2019-09-25 09:54:02
举报
文章被收录于专栏:upuptop的专栏upuptop的专栏

区分9200端口口和9300端口

  • 9300端口:ES节点之间通讯使用,是TCP协议端口号,ES集群之间通讯端口号
  • 9200端口:ES节点 和 外部 通讯使用,暴露ES RESTful接口端口号

倒排索引

ES为什么那么快?正是因为ES内部采用了倒排索引。让我们来看下什么是倒排索引吧。

什么是正排索引?
  • 源数据
1   我是中国人
2    我是大学生

如果使用正排索引的话,建立索引的过程是这样的:

切词结果:
1    我   我是  中国  中国人
2    我   我是  大学  大学生

将切词结果进行创建索引,保存文章/id。当搜索的时候,
索引库中如有匹配则返回文章内容。


不足:通过切词之后,索引比正文多了。

倒排索引:

1. 我(1:1){0},(2:1){0}
2. 我是(1:1){0},(2:1){0}
3. 中国(1:1){2}
4. 中国人(1:1){2}
5. 大学(2,1){2}
6. 大学生(2,1){2}

解释:
    ()中保存的第一个元素是文章id,第二个元素是出现次数。
       {} 中保存的是当前分词在文章中的偏移量。

通过这样的方式,当我们去搜索的时候。比如搜索‘中国’,当拿到中国的时候
就可以看到哪些地方含有中国这两个字。类似于字典的目录。

ES的优势

  • 横向可扩展性: 只需要增加台服务器,做一点儿配置,启动一下Elasticsearch就可以并入集群。
  • 分片机制 提供更好的分布性:同一个索引分成多个分片(sharding), 这点类似于HDFS的块机制;分而治之的方式可提升处理效率。
  • 高可用 提供复制( replica) 机制,一个分片可以设置多个复制,使得某台服务器在宕机的情况下,集群仍旧可以照常运行,并会把服务器宕机丢失的数据信息复制恢复到其他可用节点上。
  • 使用简单:
  • 共需一条命令就可以下载文件,然后很快就能搭建一一个站内搜索引擎。

Elasticsearch应用场景

大型分布式日志分析系统ELK
      elasticsearch(存储日志)+
      logstash(收集日志) +
      kibana(展示数据)

大型电商商品搜索系统
网盘搜索引
网站内搜索

Elasticsearch版本控制

为什么要进行版本控制

为了保证数据再多线程操作下的准确性

悲观锁和乐观锁

  • 悲观锁:假设会发生并发冲突,屏蔽一切可能违反数据准确性的操作
  • 乐观锁:假设不会发生并发冲突,只在提交操作是检查是否违反数据完整性。

内部版本控制和外部版本控制

  • 内部版本控制: version自增长,修改数据后,version会自动的加1
  • 外部版本控制:为了保持_version与外部版本控制的数值一致

ES基本概念名词

Cluster

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

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

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

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

logstash 抽取MySQL的数据到ES的配置文件

input {
  jdbc {
    jdbc_driver_library => "G:\develop\logstash-7.3.2\bin\job\mysql-connector-java.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://localhost:3306/drugs_manager"
    jdbc_user => "root"
    jdbc_password => "root"
    schedule => "* * * * *"
    statement => "SELECT * FROM drugs;"
    use_column_value => true
    tracking_column_type => "timestamp"
    tracking_column => "update_time"
    last_run_metadata_path => "syncpoint_table"
  }
}


#output {
#   stdout {
#    codec => rubydebug
#   }
#}


output {
  elasticsearch {
    hosts => ["127.0.0.1"]
    user => ""
    password => ""
    index => "drugs_manager"
    document_id => "%{id}"
  }
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 趣学程序 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 区分9200端口口和9300端口
  • 倒排索引
    • 什么是正排索引?
      • ES的优势
        • Elasticsearch应用场景
          • Elasticsearch版本控制
            • ES基本概念名词
              • logstash 抽取MySQL的数据到ES的配置文件
              相关产品与服务
              Elasticsearch Service
              腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档