让我们更加认真地使用Elasticsearch来尝试一下
之前试过玩Elasticsearch,但其实只是玩几下,没有具体使用过。
当时搭建的环境也都废弃了,所以现在要重新搭建环境再试一次。
【本次的目标】
-
- Docker で環境作ってみる。
- データを全文検索してみる。
我想要设计一个系统,用来搜索商店的商品。
-
- お店の名前から取扱商品の一覧がわかる
- 商品名から取り扱っているお店がわかる
使用 Docker 来构建 Elasticsearch(并附带 Kibana)。
因为我想将其与其他秘密的开发项目结合起来,所以我故意将Docker安装到在VirtualBox上构建的Rocky Linux系统上。Rocky Linux的文件结构如下所示。
usr ─ share ─ els ┬ elasticsearch ─ Dockerfile
├ kibana ─ Dockerfile
└ docker-compose.yml
在Elasticsearch和Kibana目录中创建Dockerfile,并在docker-compose.yml文件中调用它们。内容如下所示。
FROM docker.elastic.co/elasticsearch/elasticsearch:8.4.1
RUN elasticsearch-plugin install analysis-kuromoji
FROM docker.elastic.co/kibana/kibana:8.4.1
version: "3"
services:
elasticsearch:
build: elasticsearch
volumes:
- elasticsearch-data:/usr/share/els/elasticsearch/data
ports:
- 9200:9200
expose:
- 9300
environment:
- discovery.type=single-node
kibana:
build: kibana
volumes:
- ./kibana.yml:/usr/share/els/kibana/kibana.yml
ports:
- 5601:5601
volumes:
elasticsearch-data:
driver: local
docker exec -it els-elasticsearch-1 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
docker exec -it els-kibana-1 /usr/share/kibana/bin/kibana-verification-code
docker exec -it els-elasticsearch-1 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
把数据放进去试试看
好的,这次要尝试的是正如我之前所写的,用于搜索店铺和商品相关性的功能。我会创建这样的数据结构。
月見牛とじ御膳712
月見牛とじ丼602
豚丼393
牛黒カレー547
鰻重1,097すき家牛丼400
すきやき牛丼580
豚生姜焼き丼580
うな丼950
ほろほろチキンカレー680マクドナルドこく旨すき焼き月見440
ビッグマック390
月見マフィン340
マックフライポテト150
尝试搜索数据
当我尝试通过使用Appendix curl进行访问时,发现它是版本8。
看了很多网站后发现,相比使用Kibana,很多示例都是使用curl进行访问,所以我试着输入了curl命令!然而出乎意料地出现了错误。
[root@localhost els]# curl -X GET 'http://localhost:9200/_cat/nodes?v'
curl: (52) Empty reply from server
大概就是这样。
为什么呢?我在Kibana上可以访问它。
经过一番搜索,终于找到了关于【Ubuntu】Elasticsearch 8安装的提示,非常感谢!
Elasticsearch 8增强了安全性,设置了SSL和TLS,就算直接键入curl命令也会出错。
在输入命令时需指定SSL证书的位置,还要指定登录ID和输入密码,这样才能执行命令。
Docker的SSL证书位置写在了Elasticsearch容器内的elasticsearch.yml文件中。
具体路径应该是这样的。
/usr/share/elasticsearch/config/certs
SSL证书的文件名是「http.p12」。
转化成命令的话,就是这样的。
curl -k --cacert /usr/share/elasticsearch/config/certs/http.p12 -u elastic 'https://localhost:9200/_cat/nodes?v'
输入命令后,会要求输入 elastic 的密码,输入密码后,命令将被执行。
[root@localhost els]# curl -k --cacert /usr/share/elasticsearch/config/certs/http.p12 -u elastic 'https://localhost:9200/_cat/nodes?v'
Enter host password for user 'elastic':
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
172.22.0.2 16 96 99 5.35 4.55 3.27 cdfhilmrstw * e075949f53f7
唉,终于到了这里,真的花了好多时间呢。安全性提高之后,很多人都不知道怎么用了,这种情况确实很常见呢。
那就先这样吧,再见!