elasticsearch7从入门到精通(简介部署原理开发elk)(代码片段)

王亭_666 王亭_666     2023-04-06     565

关键词:

Elasticsearch7从入门到精通(简介、部署、原理、开发、ELK)

第1章.Elasticsearch简介

1-1.Elasticsearch介绍

  • Elasticsearch官方网站:https://www.elastic.co/cn/elasticsearch/

  • Elasticsearch是一个基于Lucene的搜索服务器

Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。

  • 提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口

  • Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎

  • Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言都可以使用

  • 根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎

    搜索引擎分类,Elasticsearch已经遥遥领先,其次是Apache Solr也较为出名,两者都是基于Lucene

    DB-Engines官网:https://db-engines.com/en/ranking

  • Elasticsearch的创始人是:Shay Banon (谢巴农)

1-2.Elasticsearch使用场景

  • 信息检索

    • 百度搜索
    • 淘宝京东主页商品搜索
    • CSDN主页关键词搜索
  • 企业内部系统搜索

    • 公司内网系统的OA、CRM、ERP搜索

      • 关系型数据库使用like进行模糊检索,会导致索引失效,效率低下
      • 可以基于Elasticsearch来进行高效检索
  • 数据分析引擎

    • Elasticsearch 聚合可以对数十亿行日志数据进行聚合分析,探索数据的趋势和规律

1-3.Elasticsearch知名企业使用场景

  • 2013年初,GitHub抛弃了Solr,采取ElasticSearch 来做PB级的搜索。“GitHub使用ElasticSearch搜索20TB的数据,包括13亿文件和1300亿行代码”
  • 维基百科:启动以elasticsearch为基础的核心搜索架构
  • SoundCloud:“SoundCloud使用ElasticSearch为1.8亿用户提供即时而精准的音乐搜索服务”
  • 百度:百度目前广泛使用ElasticSearch作为文本数据分析,采集百度所有服务器上的各类指标数据及用户自定义数据,通过对各种数据进行多维分析展示,辅助定位分析实例异常或业务层面异常。目前覆盖百度内部20多个业务线(包括casio、云分析、网盟、预测、文库、直达号、钱包、风控等),单集群最大100台机器,200个ES节点,每天导入30TB+数据
  • 新浪使用ES分析处理32亿条实时日志
  • 阿里使用ES构建挖财自己的日志采集和分析体系

1-4.Elasticsearch特点

  • 海量数据处理

    • 大型分布式集群(数百台规模服务器)
    • 处理PB级数据
    • 也支持单机运作
  • 开箱即用

    • 简单易用,操作相对便捷
    • 可快速部署生产环境
  • 可作为传统数据库的功能补充

    • 传统关系型数据库不擅长全文检索

      MySQL自带的全文索引,与ES性能差距非常大

    • 传统关系型数据库无法支持搜索排名、海量数据存储、分析等功能

    • Elasticsearch可以作为传统关系数据库的补充,提供RDBM无法提供的功能

1-5.Elasticsearch对比Solr

Solr 和 Elasticsearch 都在快速发展,但从近几年的流行趋势来看,与 Solr 相比,Elasticsearch 具有很大的吸引力;其次,与 Solr 相比,Elasticsearch 易于安装且非常轻巧;ES 增长非常的迅速。

1-6.Elasticsearch发展历史

  1. 2004年,发布第一个版本名为Compass的搜索引擎,创建搜索引擎的目的主要是为了搜索食谱
  2. 2010年,发布第二个版本更名为Elasticsearch,基于Apache Lucene开发并开源
  3. 2012年,创办Elasticsearch公司
  4. 2015年,Elasticsearch公司更名为Elastic,是专门从事与Elasticsearch相关的商业服务,并衍生了Logstash和Kibana两个项目,填补了在数据采集、数据可视化的空白。于是,ELK就诞生了
  5. 2015年,Elastic公司将开源项目Packetbeat整合到Elasticsearch技术栈中,并更名为Beats,它专门用于数据采集的轻量级组件,可以将网络日志、度量、审计等各种数据作为不同的源头发送到Logstash或者Elasticsearch
  6. 此后ELK不再包括Elastic公司所有的开源项目,ELK开始更名为Elastic Stack,将来还有更多的软件加入其中,包括数据采集、清洗、传输、存储、检索、分析、可视化等
  7. 2018年,Elastic公司在纽交所挂牌上市Elastic NV

第2章.Lucene全文检索库(铺垫加深es的检索逻辑)

2-1.全文检索介绍

  • 结构化数据与非结构化数据、
    • 结构化数据
      • 指具有固定格式或有限长度的数据
      • 如数据库,元数据等
    • 非结构化数据
      • 指不定长或无固定格式的数据
      • 如邮件,word文档等磁盘上的文件
  • 搜索结构化数据和搜索非结构化数据
    • 使用SQL语言专门搜索结构化的数据
    • 使用ES/Lucene/Solor建立倒排索引,根据关键字就可以搜索一些非结构化的数据
  • 全文检索
    • 通过一个程序扫描文本中的每一个单词,针对单词建立索引,并保存该单词在文本中的位置、以及出现的次数
    • 用户查询时,通过之前建立好的索引来查询,将索引中单词对应的文本位置、出现的次数返回给用户,因为有了具体文本的位置,所以就可以将具体内容读读取出来
    • 类似于通过字典中的检索字表查字的过程

2-2.Lucene简介

  • Lucene是一种高性能的全文检索库,在2000年开源,最初由Doug Cutting(道格·卡丁)开发

    除了Lucene,还开发了著名的网络爬虫工具Nutch,分布式系统基础架构Hadoop

  • Lucene是Apache的一个顶级开源项目,是一个全文检索引擎工具包。但Lucene不是一个完整的全文检索引擎,它只是提供一个基本的全文检索的架构,还提供了一些基本的文本分词库

  • Lucene是一个简单易用的工具包,可以方便的实现全文检索的功能

2-3.通过Lucene实现美文搜索案例

2-3-1.需求背景

在资料中的文章文件夹中,有很多的文本文件。这里面包含了几篇文章,通过搜索一个关键字就能够找到哪些文章包含了这些关键字。例如:搜索「hadoop」,就能找到hadoop相关的文章

需求分析:
方案1:
用户输入搜索关键字,遍历读取文件,并查找每个文件中是否包含关键字
方案2:
预先遍历读取文件,对每个文件的文本内容进行分词(例如:按标点符号),然后建立索引,用户输入关键字,根据之前建立的全部索引,逐个匹配搜索的关键字。

对比两种方案,方案2要比第1种效果好得多,性能也好得多。下面就使用Lucene来建立索引,然后根据索引来进行检索。

2-3-2.开发环境准备

  1. 创建一个Maven项目

GroupId: cn.wangting

ArtifactId: es_2022

  1. 创建module模块

创建完毕后,右键项目名称: es_2022 - > New -> Module 创建一个新maven模块

GroupId:cn.wangting

ArtifactId:lucene_test

  1. 导入模块的pom文件

注意是es_2022项目下,lucene_test模块下的pom.xml文件,不是父项目的总pom文件

E:\\20221101\\es_2022\\lucene_test\\pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>es_2022</artifactId>
        <groupId>cn.wangting</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>lucene_test</artifactId>
    <dependencies>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-core</artifactId>
            <version>8.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-analyzers-common</artifactId>
            <version>8.4.0</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>com.jianggujin</groupId>
            <artifactId>IKAnalyzer-lucene</artifactId>
            <version>8.0.0</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
  1. java下创建包和类
    • 在java目录创建 cn.wangting.lucene 包结构
    • 创建BuildArticleIndex类

  1. 导入测试文章数据

模块下创建data目录用来存放文章文件( 被处理的数据文件 )

模块下创建index目录用于存放最后生成的索引文件( 处理完毕后的输出结果文件 )

测试样例文章素材:

https://osswangting.oss-cn-shanghai.aliyuncs.com/elasticsearch/data_for_lucene_test.zip

2-3-3.建立索引库代码实现

实现步骤:

1.构建分词器(StandardAnalyzer)
2.构建文档写入器配置(IndexWriterConfig)
3.构建文档写入器(IndexWriter)
4.读取所有文件构建文档
5.文档中添加字段

字段名类型说明
file_nameTextFiled文件名字段,需要在索引文档中保存文件名内容
contentTextFiled内容字段,只需要能被检索,但无需在文档中保存
pathStoredFiled路径字段,无需被检索,只需要在文档中保存即可

6.写入文档
7.关闭写入器

BuildArticleIndex类代码:

package cn.wangting.lucene;

import org.apache.commons.io.FileUtils;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.StoredField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.FSDirectory;
import org.wltea.analyzer.lucene.IKAnalyzer;
import java.io.File;
import java.io.IOException;
import java.nio.file.Paths;

public class BuildArticleIndex 
    public static void main(String[] args) throws IOException 
        // 1.构建分词器(StandardAnalyzer)
        IKAnalyzer standardAnalyzer = new IKAnalyzer();
        // 2.构建文档写入器配置(IndexWriterConfig)
        IndexWriterConfig writerConfig = new IndexWriterConfig(standardAnalyzer);
        // 3.构建文档写入器(IndexWriter,注意:需要使用Paths来)
        IndexWriter indexWriter = new IndexWriter(FSDirectory.open(Paths.get("E:\\\\20221101\\\\es_2022\\\\lucene_test\\\\index")), writerConfig);
        // 4.读取所有文件构建文档
        File dataDir = new File("E:\\\\20221101\\\\es_2022\\\\lucene_test\\\\data");
        File[] fileArray = dataDir.listFiles();
        // 迭代data目录中所有的文本文件,读取文件并建立索引
        for (File file:fileArray)
            // 5.文档中添加字段
            Document doc = new Document();
            doc.add(new TextField("file_name",file.getName(), Field.Store.YES));
            doc.add(new TextField("content", FileUtils.readFileToString(file),Field.Store.NO));
            doc.add(new StoredField("path",file.getAbsolutePath()));
            // 6.写入文档
            indexWriter.addDocument(doc);
        
        // 7.关闭写入器
        indexWriter.close();
    

将代码执行后,在index目录会生成索引文件

有了索引库,接下来需要有一个查询类,来测试索引查询

2-3-4.关键字查询代码实现

需求:输入一个关键字,根据关键字查询索引库中是否有匹配的文档

1.前提:基于文章文本文件,已经生成好了索引
2.在cn.wangting.lucene包下创建一个类KeywordSearch

实现步骤:

1.使用DirectoryReader.open构建索引读取器
2.构建索引查询器(IndexSearcher)
3.构建词条(Term)和词条查询(TermQuery)
4.执行查询,获取文档
5.遍历打印文档(可以使用IndexSearch.doc根据文档ID获取到文档)
6.关键索引读取器

KeywordSearch

package cn.wangting.lucene;

import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.FSDirectory;

import java.io.IOException;
import java.nio.file.Paths;

public class KeywordSearch 
    public static void main(String[] args) throws IOException 
        // 1. 使用DirectoryReader.open构建索引读取器
        DirectoryReader reader = DirectoryReader.open(FSDirectory.open(Paths.get("E:\\\\20221101\\\\es_2022\\\\lucene_test\\\\index")));
        // 2. 构建索引查询器(IndexSearcher)
        IndexSearcher indexSearcher = new IndexSearcher(reader);
        // 3. 构建词条(Term)和词条查询(TermQuery)
        TermQuery termQuery = new TermQuery(new Term("content", "座位"));
        // 4. 执行查询,获取文档
        TopDocs topDocs = indexSearcher.search(termQuery, 50);
        // 5. 遍历打印文档(使用IndexSearch.doc根据文档ID获取到文档)
        ScoreDoc[] scoreDocArray = topDocs.scoreDocs;
        for (ScoreDoc scoreDoc : scoreDocArray) 
            // 在Lucene中,每一个文档都有一个唯一ID
            // 根据唯一ID就可以获取到文档
            Document document = indexSearcher.doc(scoreDoc.doc);
            // 获取文档中的字段
            System.out.println("-------------");
            System.out.println("文件名:" + document.get("file_name"));
            System.out.println("文件路径:" + document.get("path"));
            System.out.println("文件内容:" + document.get("content"));
        
        // 6. 关闭索引读取器
        reader.close();
    

输入一个关键词:”座位“,执行结果筛选出在《永远的坐票》文章中出现了关键词:座位

原文章路径均在索引定义的对应关系中:

字段名类型
file_nameTextFiled
contentTextFiled
pathStoredFiled

2-4.倒排索引结构

倒排索引是一种建立索引的方法。是全文检索系统中常用的数据结构。通过倒排索引,就是根据单词快速获取包含这个单词的文档列表。倒排索引通常由两个部分组成:单词词典、文档

2-5.企业不直接使用Lucene原因分析

  • Lucene的内建不支持分布式
    • Lucene是作为嵌入的类库形式使用的,本身是没有对分布式支持
  • 区间范围搜索速度非常缓慢
    • Lucene的区间范围搜索API是扩展补充的,对于在单个文档中term出现比较多的情况,搜索速度会变得很慢
    • Lucene只有在数据生成索引文件之后(Segment),才能被查询到,做不到实时
  • 可靠性无法保障
    • 无法保障Segment索引段的可靠性

第3章.Elasticsearch中的核心概念

3-1.索引-index

  • 一个索引就是一个拥有几分相似特征的文档的集合。比如说,可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引
  • 一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字
  • 在一个集群中,可以定义任意多的索引

3-2.映射-mapping

  • ElasticSearch中的映射(Mapping)用来定义一个文档
  • mapping是处理数据的方式和规则方面做一些限制,如某个字段的数据类型、默认值、分析器、是否被索引等等,这些都是映射里面可以设置

3-3.字段-Field

相当于是数据表的字段,对文档数据根据不同属性进行的分类标识

3-4.类型-Type

针对每一个字段都应该有一个对应的类型,例如:Text、Keyword、Byte等

3-5.文档-document

  • 一个文档是一个可被索引的基础信息单元
    • 某一个客户的文档
    • 某一个产品的一个文档
    • 某个订单的一个文档
  • 文档以JSON(Javascript Object Notation)格式来表示

3-6.集群-cluster

  • 一个集群就是由一个或多个节点组织在一起,它们共同持有整个的数据,并一起提供索引和搜索功能
  • 一个集群由一个唯一的名字标识在定义,这个名字默认就是“elasticsearch”
  • 定义的这个名字非常重要,因为一个节点只能通过指定某个集群的名字,来加入这个集群,来发现探寻

3-7.节点-node

  • 一个节点是集群中的一个服务器,作为集群的一部分,它存储数据,参与集群的索引和搜索功能
  • 一个节点可以通过配置集群名称的方式来加入一个指定的集群。每个节点都会被安排加入到配置文件中定义的集群名中,例如默认的“elasticsearch”
  • 如果在网络中启动了若干个节点,并假定它们能够相互发现彼此,它们将会自动地形成并加入到一个叫做“elasticsearch”的集群中
  • 在一个集群里,可以拥有任意多个节点。而且,如果当前网络中没有运行任何Elasticsearch节点,这时启动一个节点,会默认创建并加入一个叫做“elasticsearch”的集群

3-8.分片-shards

  • 一个索引可以存储超出单个结点硬件限制的大量数据。比如,一个具有10亿文档的索引占据1TB的磁盘空间,而任一节点都没有这样大的磁盘空间;或者单个节点处理搜索请求,响应太慢
  • Elasticsearch提供了将索引划分成多份的能力,这些份就叫做分片
  • 当创建一个索引的时候,可以指定分片数量
  • 每个分片本身也是一个功能完善并且独立的“索引”,这个“索引”可以被放置到集群中的任何节点上
  • 分片允许水平分割/扩展你的内容容量
  • 分片允许在分片之上进行分布式的、并行的操作,进而提高性能/吞吐量
  • 至于一个分片怎样分布,它的文档怎样聚合回搜索请求,是完全由Elasticsearch管理的,对于作为用户来说,这些都是透明的

3-9.副本-replicas

  • 在一个网络/云的环境里,任务失败或者故障随时都可能发生,在某个分片/节点出现问题导致离线状态,这种情况下,有一个故障转移机制是非常有用并且是强烈推荐的。为此目的,Elasticsearch允许创建的分片有一份或多份拷贝,这些拷贝叫做副本分片,或者直接叫副本
  • 副本在分片/节点失败的情况下,提供了高可用性。注意到复制分片从不与原/主要(original/primary)分片置于同一节点上是非常重要的
  • 扩展搜索量/吞吐量,因为搜索可以在所有的副本上并行运行
  • 每个索引可以被分成多个分片。一个索引有0个或者多个副本
  • 一旦设置了副本,每个索引就有了主分片和副本分片,分片和副本的数量可以在索引创建的时候指定
  • 在索引创建之后,可以在任何时候动态地改变副本的数量,但是不能改变分片的数量

第4章.Elasticsearch安装部署

4-1.环境准备

4-1-1.机器规划

IP地址操作系统主机名
172.28.54.207CentOS7.8es01
172.28.54.208CentOS7.8es02
172.28.54.209CentOS7.8es03

各节点设置主机名:

# 172.28.54.207
hostnamectl set-hostname es01

# 172.28.54.208
hostnamectl set-hostname es01

# 172.28.54.209
hostnamectl set-hostname es01

4-1-2.各节点创建普通用户

ES不能使用root用户来启动,否则会报错,使用普通用户来安装启动。创建一个普通用户以及定义一些常规目录用于存放我们的数据文件以及安装包等

# 3台机器都需要执行
[root@es01 ~]# useradd wangting
[root@es01 ~]# echo wangting|passwd --stdin wangting

4-1-3.各节点将普通用户权限提高

[root@es01 ~]# visudo
# 增加一行普通用户权限内容
wangting ALL=(ALL) NOPASSWD:ALL

让普通用户有更大的操作权限,一般都会给普通用户设置sudo权限,方便普通用户的操作,避免操作时频繁输入密码

4-1-4.各节点添加hosts主机名解析

[root@es01 ~]# vim /etc/hosts
# es
172.28.54.207 es01
172.28.54.208 es02
172.28.54.209 es03

如果在各节点的/etc/hosts中都配置了节点的ip解析,那后续在配置文件中,相关的ip配置都可以用解析名代替;

例如:network.host: 172.28.54.207 等同于 network.host: es01

4-1-5.安装包准备

各组件均可以在官方找到对应版本下载:

elasticsearch:https://www.elastic.co/cn/downloads/past-releases#elasticsearch

kibana:https://www.elastic.co/cn/downloads/past-releases#kibana

本文章所有相关组件安装包以及素材均分享在云盘:

链接:https://pan.baidu.com/s/1NI9vDPNZHJkqzNevwZFOmw?pwd=54lg
提取码:54lg

可以根据需要自行获取

注意:ES相关的各组件工具,版本需要对齐一致

[root@es01 ~]# su - wangting
Last login: Wed Nov  2 15:50:21 CST 2022 on pts/0
[wangting@es01 ~]$ ll
total 533168
-rw-r--r-- 1 wangting wangting 296454172 Nov  2 15:37 elasticsearch-7.6.1-linux-x86_64.tar.gz
-rw-r--r-- 1 wangting wangting 249498863 Nov  2 15:49 kibana-7.6.1-linux-x86_64.tar.gz

4-1-6.各节点环境优化

注意各节点执行的命令,需要自行在其它每个节点去执行

优化1:

系统允许 Elasticsearch 打开的最大文件数需要修改成65536

[root@es01 ~]# vim /etc/security/limits.conf
# End of file
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 65536

# 断开重连会话
[root@es01 ~]# ulimit -n
65535

这个配置不优化启动服务会出现:
[error] max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536] elasticsearch

优化2:

允许最大进程数配置修该成4096;不是4096则需要修改优化

[root@es01 ~]# vim /etc/security/limits.d/20-nproc.conf

# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.

*          soft    nproc     4096
root       soft    nproc     unlimited

这个配置不优化启动服务会出现:
[error]max number of threads [1024] for user [judy2] likely too low, increase to at least [4096]

优化3:

设置一个进程可以拥有的虚拟内存区域的数量

# 增加配置项vm.max_map_count
[root@es01 ~]# vim /etc/sysctl.conf 
vm.max_map_count=262144
# 重载配置
[root@es01 ~]# sysctl -p

这个配置不优化启动服务会出现:
[error]max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]

4-2.安装es

4-2-1.解压安装

[wangting@es01 ~]$ sudo mkdir -p /opt/module/
[wangting@es01 ~]$ sudo chown -R wangting.wangting /opt/module/
[wangting@es01 ~]$ tar -xf elasticsearch-7.6.1-linux-x86_64.tar.gz -C /opt/module/
[wangting@es01 ~]$ cd /opt/module/elasticsearch-7.6.1/

4-2-2.修改配置文件

elasticsearch.yml

[wangting@es01 elasticsearch-7.6.1]$ cd config/
[wangting@es01 config]$ mv elasticsearch.yml elasticsearch.yml_bak
[wangting@es01 config]$ vim elasticsearch.yml
cluster.name: wangting-es
node.name: es01
path.data: /data
bootstrap.memory_lock: false
network.host: es01
http.port: 9200
bootstrap.system_call_filter: false
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.seed_hosts: ["es01", "es02", "es03"]
cluster.initial_master_nodes: ["es01", "es02"]
配置项说明:
cluster.name: wangting-es # 集群名称;同一集群各节点名称必须相同
node.name: es01 # 当前节点名称;可理解成在集群中各自用这个名称区别
path.data # 数据存储路径
path.logs # 服务日志路径
bootstrap.memory_lock: false # bootstrap自检程序
network.host: es01 # 当前节点host主机
http.port: 9200 # es启动端口
bootstrap.system_call_filter: false # 禁用系统调用过滤器
http.cors.enabled: true # 是否支持跨域
http.cors.allow-origin # 跨域范围
discovery.seed_hosts # 所有可以被检索的节点列表清单
cluster.initial_master_nodes # 用于在es集群初始化时选举主节点master

jvm.options

# 修改-Xms和-Xmx参数为2g
[wangting@es01 config]$ vim jvm.options
-Xms2g
-Xmx2g

调整jvm堆内存大小

创建data目录和log目录

[wangting@es01 ~]$ 查看详情  

qnx从入门到精通:qnx简介

概述QNX最早是加拿大QuantumSoftwareSystems公司开发的分布式实时操作系统,该产品开发于20世纪80年代初,后来改名为QNX软件系统公司(QSSL,QNXSoftwareSystemLtd.)。2004年被哈曼(Harman)国际工业公司收购࿰... 查看详情

nginx从入门到精通nginx简介

1.1Nginx发展介绍Nginx(enginex)是一个高性能的Web服务器和反向代理服务器,也可以作为邮件代理服务器。Nginx特点是占有内存少,并发处理能力强,以高性能、低系统资源消耗而闻名,Nginx官方测试为5万并... 查看详情

charles从入门到精通

Charles从入门到精通 发表于2015-11-1412:00文章目录1. 目录2. 简介3. 安装Charles4. 将Charles设置成系统代理5. Charles主界面介绍6. 过滤网络请求7. 截取iPhone上的网络封包7.1. Charles上的设置7.2. iPhone上的... 查看详情

vuejs从入门到精通(代码片段)

尚硅谷Vue2.0+Vue3.0全套教程,全网最新最强vuejs从入门到精通001课程简介002vue简介003Vue官网使用指南004搭建Vue开发环境005Hello小案例006分析Hello案例007模板语法008数据绑定009el与data的两种写法010理解MVVM011Object.define013Vue中的数... 查看详情

wpfmvvm从入门到精通3:数据绑定

原文:WPFMVVM从入门到精通3:数据绑定 ?WPFMVVM从入门到精通1:MVVM模式简介WPFMVVM从入门到精通2:实现一个登录窗口WPFMVVM从入门到精通3:数据绑定WPFMVVM从入门到精通4:命令和事件WPFMVVM从入门到精通5:PasswordBox的绑... 查看详情

oracle从入门到精通系列讲解-总目录(代码片段)

总目录欢迎大家来到Lucifer三思而后行的《Oracle从入门到精通系列》,开始前博主先列出Oracle学习的大纲,同时这也可以作为大家学习Oracle的参考。下面蓝字都是传送门,点击进入即可:学前必读Oracle从入门到精通... 查看详情

docker从入门到精通,看这一篇就够了(代码片段)

一、Docker简介1、背景物理机时代一个物理机上安装操作系统,然后直接运行我们的软件。也就是说你电脑上直接跑了一个软件,并没有开虚拟机什么的,资源极其浪费。缺点部署慢成本高虚拟机都不开,直接上物... 查看详情

nginx从入门到精通nginx静态网站部署(代码片段)

Nginx是一个HTTP的web服务器,可以将服务器上的静态文件(如HTML、图片等)通过HTTP协议返回给浏览器客户端 1案例:将ace-master这个静态网站部署到Nginx服务器上。 1.1通过Xftp将ace-master上传到linux服务器/opt/static目录... 查看详情

wpfmvvm从入门到精通8:数据验证(代码片段)

原文:WPFMVVM从入门到精通8:数据验证 WPFMVVM从入门到精通1:MVVM模式简介WPFMVVM从入门到精通2:实现一个登录窗口WPFMVVM从入门到精通3:数据绑定WPFMVVM从入门到精通4:命令和事件WPFMVVM从入门到精通5:PasswordBox的绑... 查看详情

vim从入门到精通

Vimfromzerotohero-Vim从入门到精通原文地址:https://github.com/mhinz/vim-galore原文作者:MarcoHinz简介什么是Vim?Vim哲学入门精简的vimrc我正在使用什么样的Vim备忘录基础缓冲区,窗口,标签已激活、已载入、已列出、已命名的缓冲区参数... 查看详情

智能合约从入门到精通:调用数据的布局和abi(代码片段)

简介:本文将介绍Solidity语言的调用数据的布局和ABI详解。其中调用数据的布局将主要介绍以太坊合约间调用时的消息格式ABI。好久时间没有更新文章,前文中我们介绍了Solidity的特性与内部机制,本文我们将Solidity的调用数据的... 查看详情

wpfmvvm从入门到精通7:关闭窗口和打开新窗口

原文:WPFMVVM从入门到精通7:关闭窗口和打开新窗口 WPFMVVM从入门到精通1:MVVM模式简介WPFMVVM从入门到精通2:实现一个登录窗口WPFMVVM从入门到精通3:数据绑定WPFMVVM从入门到精通4:命令和事件WPFMVVM从入门到精通5:... 查看详情

wpfmvvm从入门到精通4:命令和事件(代码片段)

原文:WPFMVVM从入门到精通4:命令和事件 ?WPFMVVM从入门到精通1:MVVM模式简介WPFMVVM从入门到精通2:实现一个登录窗口WPFMVVM从入门到精通3:数据绑定WPFMVVM从入门到精通4:命令和事件WPFMVVM从入门到精通5:PasswordBox的... 查看详情

wpfmvvm从入门到精通6:radiobutton等一对多控件的绑定(代码片段)

原文:WPFMVVM从入门到精通6:RadioButton等一对多控件的绑定 ?WPFMVVM从入门到精通1:MVVM模式简介WPFMVVM从入门到精通2:实现一个登录窗口WPFMVVM从入门到精通3:数据绑定WPFMVVM从入门到精通4:命令和事件WPFMVVM从入门到... 查看详情

phoenix从入门到精通(代码片段)

 第一章、phoenix入门简介1.Phoenix定义Phoenix最早是saleforce的一个开源项目,后来成为Apache基金的顶级项目。Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBCAPIs而不是HBase客户端APIs来创建表,插入数据和对HBase数据进行查... 查看详情

flask从入门到精通

1.flask的下载和安装在windows下安装flask flask依赖于两个库,即werkzeug和jinja2,werkzeug负责服务器的部署,jinja2负责模板引擎,管理安装flask使用virtualenv工具安装virtualenv的目的是安装pip,但是python默认安装时已经安装了pip所以使用pipins... 查看详情

ros从入门到精通系列(十七)--机械臂驱动器方案

目录舵机原理简介结构组成工作原理与性能指标角度伺服力矩伺服 查看详情