ElasticSearch第一天

版权申明:

本文仅适用于学习,更多内容请访问原创作者:

微信公众号:江南一点雨

博客:https://www.javaboy.org/

 

ElasticSearch简介

1.1 Lucene

Lucene是一个开源、免费、高性能、纯java编写的全文检索引擎,可以算作是开源邻域最好的全文检索工具包。适用于很多语言,如C++、C#、paython等。它是出名的Doug Cutting的作品,当然还有hadoop也是他的。

 

Lucene主要特点:

  • 简单

  • 跨语言

  • 强大的搜素引擎

  • 索引速度快

  • 索引文件兼容不同平台

 

1.2 ElasticSearch

ElasticSearch是一个分布式、可扩展、近实时性的高性能搜索与数据分析引擎,是基于Java编写,通过进一步封装Lucene,开发者可以用RESTful API

操作全文搜索。

 

整体上来说,ElasticSearch有三大功能:

  • 数据搜集

  • 数据分析

  • 数据存储

 

ElasticSearch主要有如下特点:

  1. 分布式实时文件存储

  1. 实时分析的分布式搜索引擎

  1. 高可扩展性

  1. 可插拔的插件支持

 

所以可以有很多用例

- 应用程序搜索

- 网站搜索

1.3ElasticSearch安装

首先是打开以下链接的Es官网,找到ElasticSearch:

ES官网

ElasticSearch对应的JDK关系,如下链接:

JDK对应关系

1.3.1单节点安装

基本上正常的window、linux、mac等系统都可以使用。

 

在Centos7.x上解压文件后,解压后的目录含义如下:

 

目录含义
modules 依赖模块目录
lib 第三方依赖库
logs 输出日志目录
plugins 插件目录
bin 可执行文件目录
config 配置文件目录
data 数据存储目录

 

启动方式:

进入到bin目录下,直接执行:

[#]./elasticsearch
  • 启动过程中出现的问题

 

原因:为了安全不允许使用root用户启动,es5之后的都不能使用添加启动参数或者修改配置文件等方法启动了, 创建一个用户就可以了

1. 创建用户choleen

[root#]adduser choleen

2. 创建用户密码,需要输入两次

[root#]passwd choleen

3. 将对应的文件夹权限赋给该用户

[root#]chown -R choleen elasticsearch-7.10.0

4. 切换至choleen用户

[root#]su choleen

5. 进入bin启动,看到started就算成功

[root#]./elasticsearch

6. [root#]curl ip:9200,若看到json数据说明启动成功

可能没有成功,去elasticsearch.yml文件,更改network.host: 0.0.0.0即可,冒号后面又空格。

7. 在浏览器中输入localhost:9200访问,则需要更改配置文件。

 

当改完配置文件之后,会报如下错误:

  1. 最大文件描述4096对于es进程太小了,至少增加到65535

  1. 最大线程数量3754,对于这个用户太低了,至少增加到46096

  1. 最大虚拟内存65535太低,至少增加到262144

  1. 这个默认的发现设置不适用与生产使用,至少seed_host、seed_prividers、initial_master_node其中必须配置一个

 

 

解决方法:

  • 切换到root

#文件

[root#]echo "* soft nofile 65535" >> /etc/security/limits.conf

[root#]echo "* hard nofile 65535" >> /etc/security/limits.conf

#内存锁,不限制

[root#]echo "* soft memlock unlimited" >> /etc/security/limits.conf

[root#]echo "* hard memlock unlimited" >> /etc/security/limits.conf

[root#]echo "vm.max_map_count=262144" >> /etc/sysctl.conf

# 进程

[root#]echo "* soft nproc 4096" >> /etc/security/limits.d/20-nproc.conf

[root#] echo "* hard nproc 4096" >> /etc/security/limits.d/20-nproc.conf

[root#] sysctl -p
  • 对于jdk环境变量

jdk环境变量可以加在环境中,加es包里自带的。这个环境变量若不加,7.x版本的es启动会尝试在自己的程序所在路径获取jdk环境。若

要在这台机器启动kibana,可以加上,或者直接加到kibana启动脚本中。

[root#]cat >> /etc/profile.d/java.sh <<EOF

> export JAVA_ES_HOME="/home/software/elasticsearch-7.10.0/jdk"

> export PATH=$JAVA_ES_HOME/bin:$PATH

> export CLASSPATH=.:$JAVA_ES_HOME/lib/dt.jar:$JAVA_ES_HOME/lib/tools.jar

> EOF

 

  • 对于config/elasticsearch.yml配置文件修改

 node.name: node-1

bootstrap.memory_lock: false

bootstrap.system_call_filter: false

network.host: 0.0.0.0

http.port: 9200

cluster.initial_master_nodes: ["node-1"]

# head插件需要这两个配置

http.cors.allow-origin: "*"

http.cors.enabled: true

http.max_content_length: 200mb

当看到started时,启动成功。

在内网执行,出现json字符串则成功

[root#]curl ip:9200

 

弯弯月亮,只为美好的自己。
原文地址:https://www.cnblogs.com/Choleen/p/14071721.html