系列文章目录
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
仅仅个人学习使用
提示:以下是本篇文章正文内容,下面案例可供参考
一、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提供了大量能使我们快速便捷地处理数据的函数和方法。