当前位置:   article > 正文

elastic search入门_ubuntu 安装es

ubuntu 安装es

参考1:Elastic Search 入门 - 知乎

参考2:Ubuntu上安装ElasticSearch_ubuntu elasticsearch-CSDN博客

1、ElasticSearch安装

1.1安装JDK,省略,之前已安装过

1.2创建ES用户

  1. 创建用户:sudo useradd esuser
  2. 设置密码: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:

  1. node.name: node-1 #配置当前es节点名称(默认是被注释的,并且默认有一个节点名)
  2. cluster.name: my-application #默认是被注释的,并且默认有一个集群名
  3. path.data: /home/lighthouse/es/data # 数据目录位置
  4. path.logs: /home/lighthouse/es/logs # 日志目录位置
  5. 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

在文件最后,增加如下配置:

  1. * soft nofile 65536
  2. * hard nofile 65536

在/etc/sysctl.conf文件最后添加一行 vm.max_map_count=655360 添加完毕之后,执行命令: sysctl -p

  1. vi /etc/sysctl.conf
  2. vm.max_map_count=655360
  3. sysctl -p

1.6启动ElasticSearch

启动前先给esuser用户权限,然后把用户切换到esuser用户

  1. sudo chgrp -R lighthouse ./es
  2. sudo chown -R lighthouse ./es
  3. sudo chmod 777 es
  4. su esuser

 

 

启动ElasticSearch

./bin/elasticsearch

 

然后参考资料修改了bin/elasticsearch-env文件,让es使用es目录里的jdk,

 重新启动,报错如下:

  1. ERROR: [1] bootstrap checks failed
  2. [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
  3. 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的取值说明如下:

formatAxxept HTTP Header说明
csvtext/csv逗号分隔
jsonapplication/jsonJSON格式
tsvtext/tab-separated-valuestab分隔
txttext/pain文本格式
yamlapplication/yamlyaml格式
vborapplication/vbor简洁的二进制
smileapplication/smile类似cbor的二进制

返回json格式的数据,验证如下:

 返回数据如下:

  1. {
  2. "columns": [
  3. {
  4. "name": "name",
  5. "type": "text"
  6. },
  7. {
  8. "name": "age",
  9. "type": "long"
  10. }
  11. ],
  12. "rows": [
  13. [
  14. "李四",
  15. 8
  16. ],
  17. [
  18. "张三",
  19. 9
  20. ],
  21. [
  22. "66",
  23. 7
  24. ],
  25. [
  26. "44",
  27. 7
  28. ],
  29. [
  30. "44",
  31. 7
  32. ],
  33. [
  34. "33",
  35. 7
  36. ]
  37. ]
  38. }

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"

}

执行结果如下:

  1. {
  2. "size": 6,
  3. "_source": {
  4. "includes": [
  5. "name",
  6. "age"
  7. ],
  8. "excludes": []
  9. },
  10. "sort": [
  11. {
  12. "name.keyword": {
  13. "order": "desc",
  14. "missing": "_first",
  15. "unmapped_type": "keyword"
  16. }
  17. }
  18. ]
  19. }

拿来查询数据

 可见,可以拿来查询数据。

6、安装分词插件以及使用

在查看安装了的插件列表时,突然报需要java11,然后我安装了java11,并配置了环境变量。

参考:ubuntu安装JDK11-CSDN博客

Elasticsearch提供插件机制对系统进行扩展
以安装analysis-icu这个分词插件为例

在线安装:

  1. #查看已安装插件
  2. bin/elasticsearch-plugin list
  1. #安装插件
  2. bin/elasticsearch-plugin install analysis-icu
  3. #删除插件
  4. bin/elasticsearch-plugin remove analysis-icu

注意:安装和删除完插件后,需要重启ES服务才能生效。
测试分词效果

  1. POST _analyze
  2. {
  3. "analyzer":"icu_analyzer",
  4. "text":"中华人民共和国"
  5. }

执行结果要贴下:

http://43.138.0.199:9200/_analyze

Post

body如下:

{

    "analyzer":"icu_analyzer",

    "text":"中华人民共和国"

}

结果如下:

  1. {
  2. "tokens": [
  3. {
  4. "token": "中华",
  5. "start_offset": 0,
  6. "end_offset": 2,
  7. "type": "<IDEOGRAPHIC>",
  8. "position": 0
  9. },
  10. {
  11. "token": "人民",
  12. "start_offset": 2,
  13. "end_offset": 4,
  14. "type": "<IDEOGRAPHIC>",
  15. "position": 1
  16. },
  17. {
  18. "token": "共和国",
  19. "start_offset": 4,
  20. "end_offset": 7,
  21. "type": "<IDEOGRAPHIC>",
  22. "position": 2
  23. }
  24. ]
  25. }

测试分词效果

  1. #ES的默认分词设置是standard,会单字拆分
  2. POST _analyze
  3. {
  4. "analyzer":"standard",
  5. "text":"中华人民共和国"
  6. }
  7. #ik_smart:会做最粗粒度的拆
  8. POST _analyze
  9. {
  10. "analyzer": "ik_smart",
  11. "text": "中华人民共和国"
  12. }
  13. #ik_max_word:会将文本做最细粒度的拆分
  14. POST _analyze
  15. {
  16. "analyzer":"ik_max_word",
  17. "text":"中华人民共和国"
  18. }

执行结果要贴下:

创建索引时可以指定IK分词器作为默认分词器

  1. PUT /es_db
  2. {
  3. "settings" : {
  4. "index" : {
  5. "analysis.analyzer.default.type": "ik_max_word"
  6. }
  7. }
  8. }

执行结果要贴下:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/784672
推荐阅读
相关标签
  

闽ICP备14008679号