让我们更加认真地使用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
image.png
docker exec -it els-elasticsearch-1 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
image.png
docker exec -it els-kibana-1 /usr/share/kibana/bin/kibana-verification-code
image.png
image.png
docker exec -it els-elasticsearch-1 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
image.png

把数据放进去试试看

好的,这次要尝试的是正如我之前所写的,用于搜索店铺和商品相关性的功能。我会创建这样的数据结构。

お店商品価格吉野家牛丼426
月見牛とじ御膳712
月見牛とじ丼602
豚丼393
牛黒カレー547
鰻重1,097すき家牛丼400
すきやき牛丼580
豚生姜焼き丼580
うな丼950
ほろほろチキンカレー680マクドナルドこく旨すき焼き月見440
ビッグマック390
月見マフィン340
マックフライポテト150
image.png

尝试搜索数据

image.png

当我尝试通过使用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

唉,终于到了这里,真的花了好多时间呢。安全性提高之后,很多人都不知道怎么用了,这种情况确实很常见呢。
那就先这样吧,再见!

广告
将在 10 秒后关闭
bannerAds