虽然es在配置上要比solr简单许多,也更加灵活,基本上没有什么多余的配置,官网下载好后就可以直接使用,附一个下载地址https://www.elastic.co/downloads/past-releases
注意:ES版本差异贼大,所以尽量保证版本一致
在测试中,所有的演示我均通过HTTP来请求,测试工具我采用postman
首先将官方下载的ES解压一下我们可以看到如下目录(linux下大同小异),
然后我们通过命令行进入bin目录下执行elasticsearch命令,ES就完美运行了,地址栏中输入127.0.0.1:9200就可以看到如下界面,说明运行成功。
看到这里是不是感觉很简单呢,,,下面我们来进行安装bug练习,,,不对,是安装ik分词器。
首先先说一下为什么要分词,我们随便找一段英语看一下他的分词效果,可以看到分词效果相对来说还是不错的
但是呢我们换成中文试一下,同样的查询条件,同样的HTTP请求,汉字却被拆分成一个一个的文字了
很明显,这并不是我们想要的效果,所以我们需要安装一个支持中文的分词器,这里我们可以使用ik进行分词,附IK地址https://github.com/medcl/elasticsearch-analysis-ik
版本号与ES一致,版本号与ES一致,版本号与ES一致
重要的事情说三次,只要差一个小版本ik就不能用了,首先,我们解压下载好的压缩文件,然后在ik的根目录下(包含pom.xml)执行mvn install 命令(下载依赖),不过需要提前安装maven,maven安装并不难大家可以在网上搜索一下,然后将生成的\target\releases\elasticsearch-analysis-ik-6.2.3.zip解压到ES的plugins\ik目录下,直接启动ES,不需要加配置文件,之前的ES中需要加配置文件,但这个版本并不需要。
我们尝试运行一下,我将请求体换成了:
{
"analyzer": "ik_max_word",
"text":"看到这里是不是感觉很简单呢"
}
展示效果:
{
"tokens": [
{
"token": "看到",
"start_offset": 0,
"end_offset": 2,
"type": "CN_WORD",
"position": 0
},
{
"token": "这里是",
"start_offset": 2,
"end_offset": 5,
"type": "CN_WORD",
"position": 1
},
{
"token": "这里",
"start_offset": 2,
"end_offset": 4,
"type": "CN_WORD",
"position": 2
},
{
"token": "是不是",
"start_offset": 4,
"end_offset": 7,
"type": "CN_WORD",
"position": 3
},
{
"token": "不是",
"start_offset": 5,
"end_offset": 7,
"type": "CN_WORD",
"position": 4
},
{
"token": "感觉",
"start_offset": 7,
"end_offset": 9,
"type": "CN_WORD",
"position": 5
},
{
"token": "很简单",
"start_offset": 9,
"end_offset": 12,
"type": "CN_WORD",
"position": 6
},
{
"token": "简单",
"start_offset": 10,
"end_offset": 12,
"type": "CN_WORD",
"position": 7
},
{
"token": "呢",
"start_offset": 12,
"end_offset": 13,
"type": "CN_CHAR",
"position": 8
}
]
}
ik有两种模式,上面的方式为最大方式,它会劲量详细的拆分,我们看到,“很简单”算一个词组,简单也算一个词组,而另一种方式为ik_smart方式
请求体:
{
"analyzer": "ik_smart",
"text":"看到这里是不是感觉很简单呢"
}
结果 :可以看到他只要分词过的字符就不会参与到下一次分词中了
{
"tokens": [
{
"token": "看到",
"start_offset": 0,
"end_offset": 2,
"type": "CN_WORD",
"position": 0
},
{
"token": "这里",
"start_offset": 2,
"end_offset": 4,
"type": "CN_WORD",
"position": 1
},
{
"token": "是不是",
"start_offset": 4,
"end_offset": 7,
"type": "CN_WORD",
"position": 2
},
{
"token": "感觉",
"start_offset": 7,
"end_offset": 9,
"type": "CN_WORD",
"position": 3
},
{
"token": "很简单",
"start_offset": 9,
"end_offset": 12,
"type": "CN_WORD",
"position": 4
},
{
"token": "呢",
"start_offset": 12,
"end_offset": 13,
"type": "CN_CHAR",
"position": 5
}
]
}
好了这就是关于elasticsearch安装以及IK的流程,由于篇幅太长,后续我会发表,增删改查java客户端,head等博客