初始ES

elasticsearch

  • 介绍

介绍

Elasticsearch产生背景,大数据库检索(搜索)

  • 数据库安全,数据单点故障数据检索,数据分析,无论使用传统的什么方案,解决起来都比较麻烦

  • mysql,redis,mongdb..... 解决起来都比较麻烦

    Elasticsearch 分布式全文检索引擎,解决上面的问题

Elasticsearch是什么?

  • 是一个存数据的地方,存大量的数据,就是个数据库
  • Elasticsearch 是一个基于Lucene的分布式搜索和分析引擎,ES是elasticsearch的简写,ES是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据,本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。
  • ES是使用Java开发,在Apache许可条款下开放源代码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便
  • 使用Lucene作为器核心实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,使得全文检索变得简单
  • 设计用途:用于分布式全文检索(搜索),通过HTTP使用JSON进行数据索引,速度快 ---cs架构,cs之间通信通过resful通信

Lucene与ES的关系

  1. Lucene只是一个库,想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如果工作的

  2. ES也是用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单

    • 使用django,写一个服务,使用resfulapi,调用某个接口,就能完成numpy数据处理的操作

      127.0.0.1/index --->get 请求---》把数据排序(使用numpy)---》json格式
      
    • 客户端不止java,python,go,php,只要能发送http请求,就能使用es,就能使用Lucene,就能使用搜索引擎

ES和solr

1. Solr是Apcahe Lucene项目的开源企业搜索平台。其主要功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)的处理
 	2. Solr是盖度可扩展的,并提供了分布式搜索和索引复制。Solr是最流行的企业级搜索引擎,Solr4还增加了NoSQL支持
 	3. Solr是用Java编写、运行在Servlet容器(如Apache Tomcat或Jetty)的一个独立的全文搜索服务器。Solr采用了Lucene Java搜索库为核心的全文索引和搜索,并具有类似的REST的HTTP/XML和JSON的API
 	4. Solr强大的外部配置功能是的无需进行Java编码,便可对其进行调整以适应多种类型的应用程序。Solr有一个插件架构,以支持更多的高级定制

传统企业solr,互联网公司用Elasticsearch比较多

ES核心概念

  • Cluster:集群 ES可以作为一个独立的单个搜索服务器。不过,为了处理大型数据集,实现荣国和高可用性,ES可以运行在许多相互合作的服务器上。这些服务器的集合称之为集群(多态es机器,组成一个集群)
  • Node:节点 形成集群的每个服务器称之为节点。
  • Shard:分片 当有大量的文档时,由于内存的限制、磁盘处理能力不足、无法足够快的响应客户端的请求等,一个节点可能不够。这种情况下,数据可以分为较小的分片。每个分片放到不同的服务器上

当你查询的索引分布在多个分片上时,ES会把查询发送给每个相关的分片,并将结果组合在一起,而因公程序并不知道分片的存在。即:这个过程对用户来说是透明的

  • Replia:副本

    为提高查询吞吐量或实现高可用性,可以使用分片副本。

    副本是一个分片的精确复制,每个分片可以有零个或多个副本。ES中可以有许多相同的分片,其中之一被选择更改索引操作,这种特殊的分片称之为主分片
    当主分片丢失时,如:该分片所在的数据不可用时,集群将副本升为新的主分片

  • 全文检索

    全文检索就是对篇文章进行索引,可以根据关键字搜索,类似于mysql里的like语句

    全文检索就是把内容根据词的意义进行分词,然后分别创建索引。

    例如:

    “今天是周日我们出去玩”可能会被分词成:“今天”,“周日”,“我们”,“出去玩”等,这样当你搜索“周日”或“出去玩”都会把这句搜索出来

    # es 和mysql比较
    
    mysql                          es
    数据库                          索引 index
    表                             类型 type
    一条条记录                      文档 document
    字段(int,varchar类型)          字段 field[string,int]
    建表语句                       映射  mapping
    索引                           一切皆索引
    查询语句                       get请求
    插入语句                       post请求
    

ELK是什么、运维使用的,日志收集分析工具

ELK = Elasticsearch + Logstash+kibana

elasticsearch:后台分布式存储以及全文检索

logstash:日志加工、“搬运工”

kibana:数据可视化展示

ELK加过为数据分布式存储、可视化查询和日志解析创建了一个功能强大的管理链。三者相互配合,取长补短,共同完成分布式大数据处理工作。

那些公司在使用ES

各大互联网公司都会用

2013年初,GitHub抛弃了Solr,采取ES来做PB级的搜索。

“GitHub使用ES搜索20TB的数据,包括13亿文件和1300亿行代码”

我们什么场景下会用es

  • 搜索场景,搜友项目中都会使用搜索功能
  • 淘宝
  • 抖音
  • 百度

ES搜因到底能处理多大数据

单一索引的极限取决于存储索引的硬件、索引的设计、如何处理数据以及你为索引备份了多少副本

通常来说,以Lucene索引(也就是一个es分片,一个es索引默认5个分片,可以设置更多)不能处理多于21亿篇文档,或者多于2740亿的唯一词条。但达不到这个极限之前,我们可能就没有足够的磁盘空间了!

当然,一个分片如果很大的话,读写性能将会变得非常差理论下,es可以无限存储,只要机器的硬盘够大

posted @ 2023-05-21 15:16  可否  阅读(27)  评论(0)    收藏  举报