image
列出所有索引(数据库)
列出所有索引(列出所有的数据库)
GET /_cat/indices?v
image
删除索引(数据库)
DELETE /索引名称
添加索引(数据库)
PUT /es
{
“settings”: {
“number_of_replicas”: 1,
“number_of_shards”: 1
}
}
插入数据(插入数据的同时建表)
post /es/user
{
“name”:“张晓东”,
“age”:18
}
es:索引名(数据库)
user:类型名(表名)
name:字段名(列)
“张晓东”、"18"表示值
image
查看所有数据
get /es/user/_search
took:本次操作花费的时间,单位为毫秒
timed_out:请求是否超时
_shards:说明本次操作共搜索了哪些分片
hits:搜索命中的记录
hits.total : 符合条件的文档总数
hits.hits :匹配度较高的前N个文档
hits.max_score:文档匹配得分,这里为最高分
_score:每个文档都有一个匹配度得分,按照降序排列
_source:显示了文档的原始内容
删除数据
delete /es/user/UoupxHgBnRHM7AQTqhk9
根据id删除
修改数据
POST /es/user/U4utxHgBnRHM7AQTIhmT/_update
{
“doc”:{
“name”:“李朋”
}
}
查询(搜索)
GET /es/user/_search
{
“query”: {
“match”: {
“name”: “张三”
}
},
“size”:2
}
根据name字段进行查询
还可以排序,增加参数order即可
size:取出的记录数量
测试ES中文搜索结果
POST _analyze
{
“text”: “张晓东”
}
image
从结果可以看出,这种分词把每个汉字都独立分开来了,这对中文分词就没有意义了,所以ES默认的分词器对中文处理是有问题的。好在有很多不错的第三方的中文分词器,可以很好地和ES结合起来使用。在ES中,每种分词器(包括内置的、第三方的)都会有个名称。上面默认的操作,其实用的分词器的名称是standard。下面的请求与前面介绍的请求是等价的,如:
POST _analyze
{
“analyzer”: “standard”,
“text”: “世界如此之大”
}
当我们换一个分词器处理分词时,只需将"analyzer"字段设置相应的分词器名称即可。
ES通过安装插件的方式来支持第三方分词器,对于第三方的中文分词器,比较常用的是中科院ICTCLAS的smartcn和IKAnanlyzer分词器。在本文中,我们介绍IKAnanlyzer分词器(下面简称ik)的使用。
安装ik
git地址下载:https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v6.5.3
下载的版本要和ES的安装版本一致
切换到ES安装的bin目录中运行:(注意别复制,看看版本)
elasticsearch-plugin.bat install file:///c:/elasticsearch-analysis-ik-6.5.3.zip
image
安装完毕后,发现在ES的安装目录下的plugins目录下多了一个analysis-ik目录
(内容是ik的zip包解压后根目录下的所有文件,一共是5个jar文件和1个properties配置文件)
另外ES的安装目录下的config目录下多了一个analysis-ik目录(内容是ik的zip包解压后根目录下的config目录下所有文件,用于放置ik的自定义词库)
如果没找到config目录不要慌,因为版本不同,config肯定在
image
ik中文分词器的使用
上面提到,ik提供了两个分词器,分别是ik_max_word 和ik_smart,下面我们分别测试下。
先测试ik_max_word,输入命令如下:
POST _analyze
{
“analyzer”: “ik_max_word”,
“text”: “世界如此之大值的去看看”
}
{
<