当想要给网站或程序添加搜索功能,并且对服务有如下要求:
- 搜索解决方案高效
- 零配置和完全免费的搜索方案
- 能够简单的通过json和http与搜索引擎交互
- 搜索服务器稳定
- 能够简单的将一台服务器扩展到上百台
那么elasticsearch是非常合适的选择。
elasticsearch简单介绍
- elasticsearch是基于Lucene的搜索服务器,基于Java开发。
- 提供了一个分布式多用户能力的全文搜索引擎
- 基于RESTful web接口
关系数据搜索缺点
- 无法打分,即无法排序
- 无分布式
- 无法解析搜索请求,即无法完成分词
- 效率低,当数据过多时,单库或单表无法满足需求
- 分词,中文中单个字无法表达具体意思,所以需要把词语进行分词处理。对汉语的分词比对英语的分词要求高,英语只需要以空格符号划分。
NoSql简单介绍
NoSQL = Not Only SQL
NoSQL四大分类:
- 键值(Key-Value)存储数据库,如 Redis
- 列存储数据库
- 文档型数据库 ,如 MongDb
- 图形(Graph)数据库
elasticsearch的安装
由于elasticsearch是Java编写,所以安装elasticsearch之前一定要安装JDK
官网下载到的elasticsearch插件不多,所以选择另一插件较多的版本:elasticsearch-rtf,https://github.com/medcl/elasticsearch-rtf
elasticsearch插件安装
1.head插件,可理解为Navicat,可以对elasticsearch里的数据执行查询语句
https://github.com/mobz/elasticsearch-head
要运行head插件还要安装npm,在https://nodejs.org/en/安装nodejs即可运行npm。
由于npm的仓库在国外服务器,下载很慢,故采用cnpm命令行工具代替默认的npm。安装cnpm:
npm install -g cnpm --registry=https://registry.npm.taobao.org
2.kibana安装(需要其中的sense插件)
kibana版本要与elasticsearch版本一致 https://www.elastic.co/downloads/kibana
elasticsearch及插件运行
1.elasticsearch运行:在其bin目录下执行命令:
.\elasticsearch.bat
打开127.0.0.1:9200,显示
即为elasticsearch启动成功。
2.elasticsearch-head插件运行,在该目录下执行命令:
cnpm run start
由于elasticsearch的安全策略默认拒绝第三方服务,所以当启动head插件以后,在127.0.0.1:9100查看不到elasticsearch内容。
修改elasticsearch目录下config中的elasticsearch.yml文件,添加
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers: "X-Requested-With,Content-Type, Content-Length, X-User"
3.kibana的运行,bin目录下执行命令:
.\kibana.bat
使用python脚本一次启动elasticsearch、head插件以及kibana,可以参考:https://blog.csdn.net/weixin_40643642/article/details/89893510