TP框架使用ES和ik

本文介绍了如何在TP框架下利用Elasticsearch(ES)进行数据操作,包括创建、删除和查询索引,以及使用IK分词器进行中文分词。重点讨论了IK_max_word和IK_smart两种分词模式的区别,并展示了如何自定义词典以增强分词效果。此外,还提及了PHP操作ES的步骤,包括安装、创建索引、更新文档和搜索操作。
摘要由CSDN通过智能技术生成

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”: “世界如此之大值的去看看”
}
{ <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值