Windows 本地安装和使用 Elasticsearch

优质
小牛编辑
126浏览
2023-12-01

Elasticsearch是一款开源的数据搜索引擎和数据分析引擎,不同于WordPress的搜索,它是noSQL搜索引擎,没有数据库数据表,而是将数据以JSON格式存储在文件里,搜索效率远高于WordPress基于SQL的搜索方式,特别适合大型WooCommerce电商网站,或者做搜索推荐关键词的功能。想了解它,最好的方法是本地安装一个,自己动手试一试。

安装Elasticsearch

下载Elasticsearch,将文件解压并放到磁盘任意位置。它不需要通过注册表安装,直接运行bat文件就可以使用。每次电脑启动时都要运行一次,也可以作为windows服务随电脑启动而运行,我们先使用点击运行的方法。

找到bin/elasticsearch.bat,双击启动elasticsearch服务。会弹出windows命令行窗口,一堆文字飘过后停住,启动完成。

运行elasticsearch.bat

这时,我们打开浏览器,在地址栏输入

http://localhost:9200/

如果一切正常,你应该能看到elasticsearch的信息。

检查elasticsearch状态

使用Elasticsearch

Elasticsearch使用REST方式来沟通,所有CRUD操作都要通过发送HTTP请求的方式来完成。也就是说,一个HTTP URL里必须包含一些Elasticsearch引擎需要知道的内容:

  • 要请求的服务器地址和端口是多少。
  • 要执行什么命令,是create、get、search、update还是delete。
  • 命令的具体内容,也就是参数,比如要search什么关键词,update什么数据等等。

既然elasticsearch已经运行起来了,我们就来使用一下。使用上我们有几种选择:

  1. windows上的cmd命令终端上运行curl命令。
  2. 安装chrome浏览器插件ElasticSearch Head
  3. 安装elasticsearch套件里的图形界面——kibana

本文选择使用方式1,也是最基本的方式。目前的windows 10自带curl,我们直接开始吧,运行cmd命令打开一个新的windows命令行,开始输入命令。

演示的命令来自Index APIS,你可能发现下面的命令和官方文档的不太一样,文章结尾会解释。

创建索引

创建一个名为’my-index’的索引,运行下面的命令会得到如图所示的结果,告诉我们创建成功了。

curl -X PUT "localhost:9200/my-index-000001?pretty"
创建索引

向索引中添加数据(documents)

要添加的数据是一个JSON格式的字符串,如图示所,result是created,说明添加成功了。

  • _doc : 我们的命令,添加文档。
  • 1 : 手动指定了文档的ID,用PUT方法必须手动指定ID,否则会失败。
  • -H:指定http请求的header,要发送JSON数据,所以要是指定Content-Type。
curl -X PUT "http://localhost:9200/my-index/_doc/1?pretty" -H "Content-Type: application/json" -d "{ \"name\":\"myname\" }"
向索引中添加数据

也可以让elasticsearch自动创建ID,用POST,如下:

curl -X POST "http://localhost:9200/my-index/_doc/?pretty" -H "Content-Type: application/json" -d "{ \"name\":\"John\" }"
自动创建记录的ID

获取索引中的数据

curl -X GET "http://localhost:9200/my-index/_search?pretty" -H "Content-Type: application/json" -d "{ \"query\": { \"match_all\": {} } }"
获取索引中的数据

删除索引

curl -X DELETE "localhost:9200/my-index?pretty"

获取索引信息

curl -X GET "localhost:9200/my-index?pretty"

测试索引是否存在

curl -I "localhost:9200/my-index?pretty"

Windows上使用curl的注意事项

演示的命令和官方给出的不太一样,因为官方命令是在kibana环境下运行的,很多重复的东西,比如服务器地址端口都省略了,我们不能省略。另外,windows上使用curl命令有两个限制:

  • 不能随意换行,如果命令换行,行的结尾要使用标记,例如^。
  • 不能使用单引号,要使用双引号,因此JSON里的双引号要转义。

基于上述两个原因给出的命令看着不友好,和官方文档结合着看会更好理解。