zoukankan      html  css  js  c++  java
  • Elasticsearch的基本使用

    安装java环境

    brew cask install java
    

    下载es kibana文件包

    https://www.elastic.co/cn/downloads/elasticsearch

    https://www.elastic.co/cn/downloads/kibana

    下载中文分词包

    下载完成后,在es的plugins目录下新建ik文件夹,然后把解压文件放到这里

    https://github.com/medcl/elasticsearch-analysis-ik/releases

    注意:包的版本号一定要一致,如果ik的版本过低,可以手动修改ik的配置文件中的版本号。

    运行es

    进入到es的bin目录,执行 bash elasticsearch 命令开启服务,访问127.0.0.1:9200可以查看基本信息。

    {
    name: "wmuideMacBook-Pro.local",
    cluster_name: "elasticsearch",
    cluster_uuid: "wuRDchEhR4iVKb37FjJSCw",
    version: {
    number: "7.4.0",
    build_flavor: "default",
    build_type: "tar",
    build_hash: "22e1767283e61a198cb4db791ea66e3f11ab9910",
    build_date: "2019-09-27T08:36:48.569419Z",
    build_snapshot: false,
    lucene_version: "8.2.0",
    minimum_wire_compatibility_version: "6.8.0",
    minimum_index_compatibility_version: "6.0.0-beta1"
    },
    tagline: "You Know, for Search"
    }
    

    run kinbna

    cd bin
    bash kibana
    # visit 127.0.0.1:5601
    

    es的基本概念

    集群(cluster)

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

    索引(index)

    ElasticSearch 将它的数据存储在一个或多个索引(index)中。用 SQL 领域的术 语来类比,索引就像数据库,可以向索引写入文档或者从索引中读取文档,并通过 ElasticSearch 内部使用 Lucene 将数据写入索引或从索引中检索数据。
    文档(document)

    文档(document)

    文档是 ElasticSearch 中的主要实体。对所有使用 ElasticSearch的案例来说,他们最终都可以归结为对文档的搜索。文档由字段构成。

    映射(mapping)

    所有文档写进索引之前都会先进行分析,如何将输入的文本分割为词条、哪些词条 又会被过滤,这种行为叫做映射(mapping)。一般由用户自己定义规则。

    类型(type)

    每个文档都有与之对应的类型(type)定义。这允许用户在一个索引中存储多种文档类型,并为不同文档提供类型提供不同的映射。

    分片(shards)

    代表索引分片,es 可以把一个完整的索引分成多个分片,这样的好处是可以把一个 大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索 引创建前指定,并且索引创建后不能更改。5.X 默认不能通过配置文件定义分片

    副本(replicas)

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

    数据恢复(recovery)

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

    数据源(River)

    代表 es 的一个数据源,也是其它存储方式(如:数据库)同步数据到 es 的一个方 法。它是以插件方式存在的一个 es 服务,通过读取 river 中的数据并把它索引到 es 中,官方的 river 有 couchDB 的,RabbitMQ 的,Twitter 的,Wikipedia 的,river 这个功能将会在后面的文件中重点说到。

    网关(gateway)

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

    自动发现(discovery.zen)

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

    5.X 关闭广播,需要自定义

    通信(Transport)

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

    节点间通信端口默认:9300-9400

    分片和复制(shards and replicas)

    一个索引可以存储超出单个结点硬件限制的大量数据。比如,一个具有 10 亿文档的索 引占据 1TB 的磁盘空间,而任一节点可能没有这样大的磁盘空间来存储或者单个节点处理 搜索请求,响应会太慢。

    为了解决这个问题,Elasticsearch 提供了将索引划分成多片的能力,这些片叫做分片。当 你创建一个索引的时候,你可以指定你想要的分片的数量。每个分片本身也是一个功能完善 并且独立的“索引”,这个“索引” 可以被放置到集群中的任何节点上。
    分片之所以重要,主要有两方面的原因:

    1. 允许你水平分割/扩展你的内容容量
    2. 允许你在分片(位于多个节点上)之上进行分布式的、并行的操作,进而提高性能/ 吞吐量

    在一个网络/云的环境里,失败随时都可能发生。在某个分片/节点因为某些原因处于离线状 态或者消失的情况下,故障转移机制是非常有用且强烈推荐的。为此, Elasticsearch 允 许你创建分片的一份或多份拷贝,这些拷贝叫做复制分片,或者直接叫复制。

    在分片/节点失败的情况下,复制提供了高可用性。复制分片不与原/主要分片置于 同一节点上是非常重要的。因为搜索可以在所有的复制上并行运行,复制可以扩展你 的搜索量/吞吐量

    总之,每个索引可以被分成多个分片。一个索引也可以被复制 0 次(即没有复制) 或多次。一旦复制了,每个索引就有了主分片(作为复制源的分片)和复制分片(主 分片的拷贝)。

    分片和复制的数量可以在索引创建的时候指定。在索引创建之后,你可以在任何时 候动态地改变复制的数量,但是你不能再改变分片的数量。

    5.X 默认 5:1 5 个主分片,1 个复制分片

    默认情况下,Elasticsearch 中的每个索引分配 5 个主分片和 1 个复制。这意味着,如果你 的集群中至少有两个节点,你的索引将会有 5 个主分片和另外 5 个复制分片(1 个完全拷 贝),这样每个索引总共就有 10 个分片。

  • 相关阅读:
    yum下载安装mysql服务
    windows编写sh脚本在linux上不能执行
    ectouch第二讲之 文件结构
    ecshop第一讲之安装
    class id 区别
    thinkphp模板中截取中文字符串的方法分享
    CI 配置验证规则
    CodeIgniter配置之config
    codeigniter中base_url和site_url
    使用phpmyadmin导入SQL数据报错:#1062
  • 原文地址:https://www.cnblogs.com/yesyes/p/15375807.html
Copyright © 2011-2022 走看看