参考1:Elastic Search 入门 - 知乎
参考2:Ubuntu上安装ElasticSearch_ubuntu elasticsearch-CSDN博客
1、ElasticSearch安装
1.1安装JDK,省略,之前已安装过
1.2创建ES用户
创建用户:sudo useradd esuser
设置密码:sudo passwd esuser
1.3 下载ElasticSearch安装包
Ubuntu上下载:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.11.1-linux-x86_64.tar.gz
然后解压:
tar -xvzf elasticsearch-7.11.1-linux-x86_64.tar.gz
1.4配置
配置jvm.options
vi config/jvm.options
配置elasticsearch.yml:
node.name: node-1 #配置当前es节点名称(默认是被注释的,并且默认有一个节点名)
cluster.name: my-application #默认是被注释的,并且默认有一个集群名
path.data: /home/lighthouse/es/data # 数据目录位置
path.logs: /home/lighthouse/es/logs # 日志目录位置
network.host: 0.0.0.0 #绑定的ip:默认只允许本机访问,修改为0.0.0.0后则可以远程访问cluster.initial_master_nodes: ["node-1", "node-2"] #默认是被注释的 设置master节点列表 用逗号分隔
根据以上设置的path.data和path.logs内容,需要在/home/lighthouse/目录下创建es目录,以及在es目录下创建文件data和logs。
ElasticSearch的配置信息:
属性名 说明
cluster.name 配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称。
node.name 节点名,es会默认随机指定一个名字,建议指定一个有意义的名称,方便管理
path.conf 设置配置文件的存储路径,tar或zip包安装默认在es根目录下的config文件夹,rpm安装默认在/etc/ elasticsearch
path.data 设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开
path.logs 设置日志文件的存储路径,默认是es根目录下的logs文件夹
path.plugins 设置插件的存放路径,默认是es根目录下的plugins文件夹
bootstrap.memory_lock 设置为true可以锁住ES使用的内存,避免内存进行swap
network.host 设置bind_host和publish_host,设置为0.0.0.0允许外网访问
http.port 设置对外服务的http端口,默认为9200。
transport.tcp.port 集群结点之间通信端口
discovery.zen.ping.timeout 设置ES自动发现节点连接超时的时间,默认为3秒,如果网络延迟高可设置大些
discovery.zen.minimum_master_nodes 主结点数量的最少值 ,此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有3个符合要求的主结点,那么这里要设置为2
1.5 修改/etc/security/limits.conf文件 增加配置
sudo vi /etc/security/limits.conf
在文件最后,增加如下配置:
* soft nofile 65536
* hard nofile 65536
在/etc/sysctl.conf文件最后添加一行 vm.max_map_count=655360 添加完毕之后,执行命令: sysctl -p
vi /etc/sysctl.conf
vm.max_map_count=655360
sysctl -p
1.6启动ElasticSearch
启动前先给esuser用户权限,然后把用户切换到esuser用户
sudo chgrp -R lighthouse ./es
sudo chown -R lighthouse ./es
sudo chmod 777 es
su esuser
启动ElasticSearch
./bin/elasticsearch
然后参考资料修改了bin/elasticsearch-env文件,让es使用es目录里的jdk,
重新启动,报错如下:
ERROR: [1] bootstrap checks failed
[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
ERROR: Elasticsearch did not exit normally - check the logs at /home/lighthouse/es/logs/my-application.log
把该释放的内存(可以使用free -h查看)都释放出来后,重新启动,成功了。
可以看到绑定了两个端口:
-
9300:集群节点间通讯接口
-
9200:客户端访问接口
访问http://43.138.0.199:9200/在客户端可以看到以下信息:
2、学习es,索引的维护
2.1创建索引
http://43.138.0.199:9200/student
PUT
2.2、获得索引信息
http://43.138.0.199:9200/student
GET
2.3删除索引
http://43.138.0.199:9200/city
DELETE
3、为索引添加数据
增删改查
RESTful接口URL的格式:
http://localhost:9200/<index>/<type>/[<id>]
3.1、学生索引中添加小学学生类型的数据
http://43.138.0.199:9200/student/xiaoxue/1
Post方式
Body如下:
{
"name":"张三",
"age":7
}
3.2、查看单个学生数据
http://43.138.0.199:9200/student/xiaoxue/1
GET
3.3、修改学生信息
http://43.138.0.199:9200/student/xiaoxue/1
put
{
"name": "张三",
"age": 9
}
再次查看该学生信息,截图如下:
3.4查询所有学生列表
再添加一个学生,可以验证列表中的多个结果。
然后,调用查询接口:
get接口
http://43.138.0.199:9200/student/_search
继续验证分页查询
GET方式,from表示从哪个数据开始读取(第一个数据就是0,以此类推),size表示读取多少个数据。
http://43.138.0.199:9200/student/_search?from=0&size=2
然后查询第2页的数据,from要改成2,如下所示:
GET
http://43.138.0.199:9200/student/_search?from=2&size=2
继续验证查询条件:
GET
http://43.138.0.199:9200/student/_search?from=0&size=2
body如下:
{
"query": {
"match": {
"name": "张三"
}
}
}
结果如下:
有关查询条件的说明如下:
有关查询结果的说明如下:
4、在ES中执行SQL查询ES数据
POST
http://43.138.0.199:9200/_sql?format=txt
Body如下:
{
"query": "SELECT name,age FROM student order by name desc limit 6"
}
执行结果如下:
参数format的取值说明如下:
format | Axxept HTTP Header | 说明 |
csv | text/csv | 逗号分隔 |
json | application/json | JSON格式 |
tsv | text/tab-separated-values | tab分隔 |
txt | text/pain | 文本格式 |
yaml | application/yaml | yaml格式 |
vbor | application/vbor | 简洁的二进制 |
smile | application/smile | 类似cbor的二进制 |
返回json格式的数据,验证如下:
返回数据如下:
{
"columns": [
{
"name": "name",
"type": "text"
},
{
"name": "age",
"type": "long"
}
],
"rows": [
[
"李四",
8
],
[
"张三",
9
],
[
"66",
7
],
[
"44",
7
],
[
"44",
7
],
[
"33",
7
]
]
}
5、根据SQL生成DSL语句
POST
http://43.138.0.199:9200/_sql/translate
Body如下:
{
"query": "SELECT name,age FROM student order by name desc limit 6"
}
执行结果如下:
{
"size": 6,
"_source": {
"includes": [
"name",
"age"
],
"excludes": []
},
"sort": [
{
"name.keyword": {
"order": "desc",
"missing": "_first",
"unmapped_type": "keyword"
}
}
]
}
拿来查询数据
可见,可以拿来查询数据。
6、安装分词插件以及使用
在查看安装了的插件列表时,突然报需要java11,然后我安装了java11,并配置了环境变量。
参考:ubuntu安装JDK11-CSDN博客
Elasticsearch提供插件机制对系统进行扩展
以安装analysis-icu这个分词插件为例
在线安装:
#查看已安装插件
bin/elasticsearch-plugin list
#安装插件
bin/elasticsearch-plugin install analysis-icu
#删除插件
bin/elasticsearch-plugin remove analysis-icu
注意:安装和删除完插件后,需要重启ES服务才能生效。
测试分词效果
POST _analyze
{
"analyzer":"icu_analyzer",
"text":"中华人民共和国"
}
执行结果要贴下:文章来源:https://www.toymoban.com/news/detail-817249.html
http://43.138.0.199:9200/_analyze
Post
body如下:
{
"analyzer":"icu_analyzer",
"text":"中华人民共和国"
}
结果如下:
{
"tokens": [
{
"token": "中华",
"start_offset": 0,
"end_offset": 2,
"type": "<IDEOGRAPHIC>",
"position": 0
},
{
"token": "人民",
"start_offset": 2,
"end_offset": 4,
"type": "<IDEOGRAPHIC>",
"position": 1
},
{
"token": "共和国",
"start_offset": 4,
"end_offset": 7,
"type": "<IDEOGRAPHIC>",
"position": 2
}
]
}
测试分词效果
#ES的默认分词设置是standard,会单字拆分
POST _analyze
{
"analyzer":"standard",
"text":"中华人民共和国"
}
#ik_smart:会做最粗粒度的拆
POST _analyze
{
"analyzer": "ik_smart",
"text": "中华人民共和国"
}
#ik_max_word:会将文本做最细粒度的拆分
POST _analyze
{
"analyzer":"ik_max_word",
"text":"中华人民共和国"
}
执行结果要贴下:
创建索引时可以指定IK分词器作为默认分词器
PUT /es_db
{
"settings" : {
"index" : {
"analysis.analyzer.default.type": "ik_max_word"
}
}
}
执行结果要贴下:
文章来源地址https://www.toymoban.com/news/detail-817249.html
到了这里,关于elastic search入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!