当前位置:   article > 正文

ElasticSearch使用入门及拼音搜索介绍_拼音搜索功能介绍

拼音搜索功能介绍

最近有个项目需要用到拼音搜索并高亮显示所匹配的中文,其实拼音搜索可以通过将中文转化为拼音存储在库表如mysql中,然后通过sql like语句查询搜索到对应的中文,在一些并发要求并不高、中文已知的情况下是完全可以做到拼音搜索。但是由于项目要求不仅能够搜索出来对应的中文,但是对于高亮显示匹配的中文难度成本就比较高了,此时需要通过中文拼音分词来实现。
经过一番调研,鉴于elasticsearch社区的活跃,及相关拼音分词插件也比较丰富,选用ES作为搜索方案。虽然现在ES版本已经到了6.x了,而且每隔一个月左右都会有新版本发布,由于机器条件等的限制,ES版本越高越吃内存和CPU,所以选择2.4.2版本,稳定、占用内存小、支持集群,满足本次需求,如果空间不够也可多安装几个ES组成集群。

es安装

官网选择2.4.2的linux版本tgz安装包下载上传到linux服务器,解压后在bin中启动,两种启动方式:
1.前台启动./elasticsearch,启动日志显示在前台console,关闭会话则关闭ES
2.后台启动./elasticsearch -d,启动日志打印在logs文件夹下。
此时可通过linux的curl命令来请求ES的http restful接口创建索引、type、增删改查等基本操作,也可通过Post等工具请求ES的Http接口。本文通过head工具进行操作。

安装plugin-head

使用head插件是ES必备的工具,除了可以操作请求restful接口操作ES数据库,还可以用于观察ES的状态等。
通过在bin文件下执行命令./plugin install mobz/elasticsearch-head,ES则自动到github上下载并安装。
通过ip:port/_plugin/head即可访问ES,port默认为9200,如果发现不能访问,则需要在config文件下的elasticsearch.yml修改或添加如下网络配置,然后重启es后再通过ip:port/_plugin/head访问即可(http.port可配置)。
安装head后的效果图1

elasticsearch.yml配置,暂未知es的关闭方法,可通过kill命令关闭es

#网络及端口配置
network.host: 0.0.0.0
http.port: 11192
  • 1
  • 2
  • 3
创建索引index

ES的Restful接口语法规则一般是用json来进行数据存储或设置,可通过head插件中的【复合查询】菜单栏进行操作,支持多数HTTP传输模式。
head http操作界面

ES中的索引相当于mysql的库,type相当于mysql中的表。
ES创建索引的方式也很简单,通过http PUT接口即可创建一个索引,如下:

http://172.168.1.11:11192/es_dev_v1
//通过对以上接口进行PUT操作,即可创建名为 es_dev_v1 的索引
  • 1
  • 2

创建完成后如下
index创建

创建type,并创建mapping

ES默认是可以不用设置type的mapping的,可以直接通过http存储数据,ES会根据存储的json数据自动创建一个type及对应的字段mapping,如下

http://172.168.1.11:11192/es_dev_v1/temp/12

//传输方式:POST
{
  "name":"test",
  "address":"America",
  "tel":"132134542"
}
//通过POST存储数据,即在es_dev中的temp type(表)中存储了一条id=12的数据,如果id不传,则ES会自动创建一个id用于引用这条数据。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

添加后的数据及mapping如下,3个字段都默认为String类型
添加数据

通过访问http://172.168.1.11:11192/es_dev_v1
数据mapping

如何修改索引字段类型(即mapping)

ES索引一旦创建,不支持修改索引的mapping,如修改某个字段的类型、分词、搜索规则等,ES的规则是字段类型只能是创建索引的时候就设置好或者由ES自动设置,如果要修改只能重新创建一个索引index,然后重新设置mapping.当然线上生产环境是不允许这么做的。
可以借用别名来切换ES库表,创建一个索引es_dev_v1时,指定它的别名为es_dev,当需要修改mapping时,再创建一个索引es_dev_v2设置新的mapping,然后将数据刷入es_dev_v2,删除es_deves_dev_v1的别名关系,重新建立es_deves_dev_v2的关联。此时使用es_dev即可访问索引库。
参考:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/83518
推荐阅读
相关标签
  

闽ICP备14008679号