elasticsearch搭建,学习,使用

系列文章目录


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

仅仅个人学习使用


提示:以下是本篇文章正文内容,下面案例可供参考

一、ES是什么?

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。本次采用的是7.6.1版本,下载地址为:https://elasticsearch.cn/download/
以下版本推荐一致
在这里插入图片描述

二、ES和Lucene和Solr的对比

市面上流行的搜索引擎框架有ES和Lucene和Solr,下面是简单的对比。
Lucene

  • 只能在java项目当中使用,并且要用jar包的方式启用
  • 使用非常复杂-创建索引和搜索引擎代码繁杂
  • 不支持集群环境-索引数据不同步(不支持大型项目)
  • 索引数据如果太多就不行,索引库和应用所在同一个服务器,共同占用磁盘,占用空间少。

Solr

  • Solr利用Zookeeper进行分布式管理,而Elasticsearch自身带有分布式协调管理功能
  • Solr支持更多格式的数据,比如json,xml,csv。而elasticsearch仅仅支持json
  • Solr在传统的搜索应用中表现好于elasticsearch,但在处理实际搜索应用时效率明显低于elasticsearch。
  • Solr是传统搜索应用的有力解决方案,但elasticsearch更适用于新兴的实时搜索应用。

三、安装

1.ES的安装

es的安装不允许使用root用户报错信息:java.lang.RuntimeException: can not runelasticsearch as root

#增加用户组
sudo groupadd es
 
#增加用户,并规定所属用户组和密码
useradd es
passwd es
 
# 递归更改文件的拥有者
sudo chown -R es:es /data/tools/elasticsearch

#在elasticsearch文件下创建data,log文件夹

max_map_count太小,报错信息:max virtual memory areas vm.max_map_count [65530] is too low
max_map_count:允许一个进程在VMAs(虚拟内存区域)拥有最大数量

sudo vim /etc/sysctl.conf
  
#增加以下内容:
vm.max_map_count=655360
  
#保存退出vim后使sysctl.conf生效:
sysctl -p

最大文件数、最大进程数、 最大锁定内存地址空间,报错信息:
Unable to lock JVM Memory: error=12, reason=Cannot allocate memory
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
memory locking requested for elasticsearch process but memory is not locked12345

# 修改limits.conf配置(es可以换成*)
sudo vim /etc/security/limits.conf
es soft nofile 65536
es hard nofile 65536
es soft nproc 65536
es hard nproc 65536
es soft memlock unlimited
es hard memlock unlimited

修改配置文件(单机)

vim elasticsearch.yml
 
#数据目录
path.data: /data/tools/elasticsearch/data
#日志目录
path.logs: /data/tools/elasticsearch/logs
#支持外网访问
network.host: 0.0.0.0
#支持对外端口修改,默认9200
http.port: 9200
#集群名称
cluster.name: es-cluster
#节点名称
node.name: node-one
#discovery.seed_hosts: ["host1", "host2"]
cluster.initial_master_nodes: ["node-one"]
#bootstrap.system_call_filter: false
#bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow-origin:: "*"

vim jvm.options
添加-XX:MaxDirectMemorySize=64m
es7.6.1的版本使用的是JDK11的版本启动,如果想用本地jdk8的环境启动修改此配置

启动es

# 退出es用户,重新登录es生效
su es
cd data/tools/elasticsearch/bin
./elasticsearch
# 通过打印的配置信息察看是否启动成功,成功后退出再后台启动
./elasticsearch -d

2.kibana的安装

kibana就是一个图形操作界面化客户端

#解压
tar zxvf kibana-7.6.1-linux-x86_64.tar.gz
#重命名
mv kibana-7.6.1-linux-x86_64 kibana
#修改配置文件
server.port: 5601
server.host: "10.22.50.135"
elasticsearch.hosts: ["http://10.22.50.135:9201"]
i18n.locale: "zh-CN"
#后台启动 也不允许root启动
nohup ./kibana &

浏览器访问:http://10.22.50.135:5601/app/kibana

3.IK分词器的安装

IK分词器就是在一定程度上可以对中文进行拆分
下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.6.1

#在es的安装目录下plugins建立一个目录叫做ik
然后解压 并放在ik目录下
重启es

验证:
在控制台输入

POST _analyze
{
  "analyzer": "ik_max_word",
  "text": "中华人民共和国"
}

POST _analyze
{
  "analyzer": "standard",
  "text": "中华人民共和国"
}

可以得到如下的结果
在这里插入图片描述

4.指定IK分词器作为默认分词器

el的默认分词器采用的standard,在中文分词会略显尴尬。

PUT /school_index
{
  "settings": {
    "index":{
      "analysis.analyzer.default.type":"ik_max_word"
    }
  }
}

以上操作就是将school_index就采用默认ik分词器的ik_max_word


ElasticSearch当中Post和Put的区别
  • 更新:PUT会将新的json值完全替换掉旧的;而POST方式只会更新相同字段的值,其他数据不会改变,新提交的字段若不存在则增加。
  • PUT和DELETE操作是幂等的。所谓幂等是指不管进行多少次操作,结果都一样。比如用PUT修改一篇文章,然后在做同样的操作,每次操作后的结果并没有什么不同,DELETE也是一样。
  • POST操作不是幂等的,比如常见的POST重复加载问题:当我们多次发出同样的POST请求后,其结果是创建了若干的资源。
  • 创建操作可以使用POST,也可以使用PUT,区别就在于POST是作用在一个集合资源(/articles)之上的,而PUT操作是作用在一个具体资源之上的(/articles/123)。

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白努力学java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值