因为项目需要,最近接触到了elasticsearch,之前没有听说过,对于我这么一个非纯开发人员来说,学习一种新东西着实路途坎坷,为此踩了不少坑,本文以一个纯小白的角度介绍elasticsearch的安装使用,是入门级别的入门,在高手看来这些可能不值一提,甚至在具有半年开发经验的人员看来都太过小儿科,不过还是将这些记录下来,希望能帮助到一些人,也为自己养成一个勤记笔记的好习惯。
由于接触到elasticsearch最开始是在Windows环境下,所以先写Windows的,后期有时间会总结Linux环境的使用,资源很好找,直接官方网站下载安装包即可,地址:https://www.elastic.co/cn/downloads/elasticsearch
下载完成后,解压,直接运行elasticsearch/bin/elasticsearch.bat即可,等待弹出的对话框显示如下状态,表示启动完成:
这个时候,在浏览器中输入地址 http://localhost:9200 ,将看到以下信息:
到这里一切都很顺利,一开始并不知道这个东西是用来干嘛的,就按照网上找的一些资源去逐步了解,后来发现官网上还有入门视频,就简单去看了下,视频介绍的版本可能跟下载的版本不一样,不过可以作为一个简单的入门了解,视频中主要是借用kibana这个工具,他是一个可视化的页面,可以直观的将ES库里边的数据进行检索展示,并能进行必要的增删改查等操作,就是这个东西搞的我头疼了两天,后边说到~
官网还提供很多权威指南,有中文的也有英文的,我想这也是一个不错的学习途径吧,不过比较坑的是,他的文档应该很久没有更新了,一上来就有这样一个提示:
先不管这些吧,开始学习吧,遇到版本不一致导致的问题在上网搜索就是了,当看到基础入门章节的第一个小节的第一部分,安装并运行elasticsearch,最下边有一个,安装sense,不知所云,又看到kibana,第一次见到,那就先安装他吧
kibana的下载安装也不复杂,直接到官网下载,按照官方说明文档安装就可以,下载地址是: https://www.elastic.co/cn/downloads/kibana,Windows环境安装官方说明手册地址: https://www.elastic.co/guide/cn/kibana/current/windows.html,运行也是弹出一个对话框,完成后是这样的,需要提醒的是,在运行kibana前要运行elasticsearch
然后在浏览器中输入地址 http://localhost:5601,将看到以下界面,7版本和之前版本的页面差别还是挺大的,但是功能只多不少
这时候,我们可以按照官方文档中的方法,来加载示例数据了,官方有三个数据集,其中accounts和logs.jsonl需要解压
我们下载这三个文件到本地,然后按照文档,在kibana中点击Dev Tools,输入第一个莎士比亚数据集的映射
PUT /shakespeare
{
"mappings": {
"doc": {
"properties": {
"speaker": {"type": "keyword"},
"play_name": {"type": "keyword"},
"line_id": {"type": "integer"},
"speech_number": {"type": "integer"}
}
}
}}
然后我们就看到右侧的错误提示了
看错误提示,大概意思应该是这个映射的参数有问题,我就不懂了,按照官方文档一步步过来为啥不行呢,暂且跳过看下边的,使用elasticsearch bulk API来加载数据集,然后看到三行代码,并不懂是啥意思,
就去搜索了curl命令是干嘛的,百度百科: cURL是一个利用URL语法在命令行下工作的文件传输工具,那应该在哪里输入这三行代码呢?一脸懵逼,试着在kibana的Dev Tools中输入,拷贝进去之后变样子了,显然不是的,后来在网上搜索才发现,原来是需要在命令行中执行的,而且比较坑的是,Windows下不能直接运行curl命令,windows中使用curl命令需要下载curl工具,官网下载解压后将.exe文件拷贝到C:\Windows\System32,这样就可以在DOS窗口任意位置使用curl命令(来自博客: https://blog.csdn.net/eva_lu/article/details/79175945)
之后按照这个方法,在cmd中可以输入curl命令了,兴高采烈的开始准备导入数据了,先试一下curl命令是否好用,输入如下:
发现和浏览器中的是一样的,接下来,我们拷贝导入数据的curl命令到cmd窗口,看看效果:
当然是不出意外的报错了,大致意思应该是找不到这个json文件,为此纠结了好久不知道哪里出问题了,后来才知道,这个东西的配置文件没有改啊,真实愚蠢至极,为啥就没想到配置文件这个东西呢,以后一定要记住,学习一种新东西或者软件,一定要记得修改配置文件这一步,可能对于大部分程序员来说这都是在正常不过的常识了,而我,作为一个伪程序员,需要牢记~
为此,使用记事本或者notepad打开config文件夹下的elasticsearch.yml文件,可以看到这里有集群和节点的一些配置信息,然后找到Paths,下边的path.data,这个就是加载数据的位置,把他改成刚才下载的三个文件的地址,并放开他前面的注释,如下:
然后我们再次在命令行中输入,这时候注意把最后@后边的补充为完成的json文件地址,然后效果如下:
然而,错误还是存在的,这个在上一次修改文件位置之前就存在了,这是因为语法不规范导致的,将单引号的位置改为双引号即可(来自https://blog.csdn.net/mikasa3/article/details/79059716),修改之后再看效果:
界面会快速的刷新图片上部分的内容,应该是一个加载的过程,大约几秒钟后,加载完毕,至此数据集通过curl命令导入ES库算是解决了
我们回到kibana页面,在左侧输入 GET /_cat/indices?v 可以在右侧看到已经存在的索引以及他们的状态:
其中第3行index为bank的那条,是我们刚才加载进去的数据集,他的索引是bank,另外两条是kibana自己的示例,我们可以通过kibana左侧的management页面,添加index pattern,来查看数据集
点击完第3步之后,在点击create index pattern即可,然后在kibana页面的左侧点击Discover,就可以看到数据了。
这次踩的坑,知道了修改配置文件,接下来将要利用ES库来进行业务处理了,使用JavaAPI去调用,等到使用以后再来总结记录。