转发自https://blog.csdn.net/bipch/article/details/53364210
近日因工作原因使用了ElasticSearch(以下简称ES),因为是第一次使用,所以遇到了诸多困难。然而网络上的文章(主要指CSDN)绝大多数说的都是1.几的版本,与2.4版本相去甚远,并且关于JavaAPI的内容也比较少,说的都是命令行下的操作,不能应用于生产实际。笔者艰苦奋斗了近两天终于基本掌握了ES2.4.2的简单使用,分享如下,希望能让后来人少走一些弯路。
注:截至发稿时,ES的最新版本为5.0.1。对于没有使用5.0而使用2.4的原因,笔者将于文中有关位置作出解释,简单地说就是暂时还不好用。
1.安装ES
下载链接:https://www.elastic.co/downloads/past-releases/elasticsearch-2-4-2
笔者参与的项目应用于桌面程序,所以这里只介绍Windows环境下的内容。
将下载下来的压缩文件解压,路径不要太敏感,比如不要放在system32或者Program Files这种地方,以后用插件的时候可能java会出于安全考虑不允许读写这些路径的文件。
运行bin文件夹中的elasticsearch.bat,不要关掉,在浏览器中输入localhost:9200,如果返回一段包含集群信息的json即为安装成功。
这时可以用curl测试一下插入查询之类的命令,本文不介绍命令行内容,可参考官方文档https://www.elastic.co/guide/en/elasticsearch/guide/current/index.html
1.1测试ElaticSearch是否安装成功
http://127.0.0.1:9200/_analyze?analyzer=standard&pretty=true&text=我是中国人
2.安装ik分词插件(如果不使用ik分词可跳过这一部分)
下载链接:https://github.com/medcl/elasticsearch-analysis-ik/releases
项目主页中有ES与分词器版本的对应,ES2.4.2使用1.10.1版本的ik分词器。
关闭elasticsearch.bat,将下载下来的压缩文件解压,在ES目录中的plugins文件夹里新建名为ik的文件夹,将解压得到的所有文件复制到ik中。
将plugin-descriptor.properties文件中的2.4.1改为2.4.2。这是因为1.10.1版本的ik分词器是为2.4.1版本的ES设计的,如果不改这一项启动elasticsearch.bat的时候会抛出异常。笔者没有测试过5.0版本的ik能否用于2.4版本的ES。
在config文件夹中的elasticsearch.yml文件的最后加上index.analysis.analyzer.ik.type : "ik"
插件安装到此结束,网上其他文章说的往哪哪复制文件什么的都是老版本的ES需要的,2.4.2版本不需要。也有说用maven打包的,那个打不打包都可以,因为你下下来的压缩包就是打包后的结果,猜测是老版的ik没有release版本。
2.1测试ik分词器是否配置成功
http://127.0.0.1:9200/_analyze?analyzer=ik&pretty=true&text=我是中国人
3.使用java添加索引
笔者不知道应该使用哪些jar包,笔者的处理方法是将所有的jar包都添加进工程。
实际上插入文档的时候ES会自动根据输入的index和type创建相应的index和type,但是因为我们要使用ik分词器,所以我们需要设置一下index的属性,而不能自动创建。所以不使用ik分词也可以跳过这一部分。
注意index的创建只能执行一次,如果执行前index已经存在,那么就会抛出异常,并不会更改设置。
4.插入和检索文档
其中,新建客户端时,ES5.0的API和ES2.4之前的API是不一样的,而ES5.0的API使用时会报找不到方法的错,不知道是API写错了还是jar包给少了,总之是不能用,所以笔者没有使用更新的5.0版本。