es实现mysql like的查询
es实现mysql like的查询
·
es中需要先安装中文分词插件ik
#如果之前有这个索引,需要先删除索引
DELETE /lepeng
#创建一个索引
PUT /lepeng
#指定索引的格式
#ik_max_word 将文本做最细粒度的拆分
#ik_smart 会做最粗粒度的拆分
#属性keyword不使用ik分词
PUT /lepeng/_mapping/
{
"properties":{
"title":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
},
"analyzer": "ik_max_word"
}
}
}
#es中插入和更新数据都可用post,为了方便要指定索引的id
POST /lepeng/_doc/1
{
"title": "我和猪一样他们好AA的"
}
POST /lepeng/_doc/2
{
"title": "榭+舟亢凡丶乐他们一样"
}
#查询某个数据,实现的是mysql like查询的效果
GET lepeng/_search
{
"query": {
"wildcard": {
"title.keyword": {
"value": "*一样*"
}
}
}
}
#获取全部数据
GET lepeng/_search
{
"query": {
"match_all": {
}
},
"from":0,
"size":1000
}
es从7.9版本开始,新增了一种类型wildcard用于模糊搜索,更加方便了,测试如下:
#如果之前有这个索引,需要先删除索引
DELETE /lepeng
#创建一个索引
PUT /lepeng
#指定索引的格式
PUT /lepeng/_mapping/
{
"properties":{
"title":{
"type":"wildcard"
}
}
}
#es中插入和更新数据都可用post,为了方便要指定索引的id
POST /lepeng/_doc/1
{
"title": "我和猪一样他们好AA的"
}
POST /lepeng/_doc/2
{
"title": "榭+舟亢凡丶乐他们一样"
}
#查询某个数据,实现的是mysql like查询的效果
GET lepeng/_search
{
"query": {
"match": {
"title": "*+舟亢凡丶乐他们一*"
}
}
}
更多推荐
已为社区贡献3条内容
所有评论(0)