1、ElasticSearch是什么
和Lucene一样,都是用来做全文检索(创建索引和搜索索引).只是lucene是全文检索工具包,而ES是全文搜索服务器,以基于索引的搜索代替数据库模糊查询,增强查询效率.
lucene不足:
- lucene只能在java中以java jar引入项目,其他语言就不行了.
- lucene使用非常复杂,写一大堆代码来实现创建索引和搜索索引.
- lucene不能集群(多个服务器部署同一个项目协调工作)环境使用
lucene一般在小型项目使用(不要集群),像es,sorl等实在大型项目中使用.当然小型项目用他们也ok.
es补足
ES弥补了lucene不足,而且其他方面还做了加强:
- 不仅支持java环境
es是服务器,它把原来lucene很复杂的操作封装成了Restful(http)接口 - 使用方式变得很简单
进行了封装,只需发请求到服务器就OK - 也能集群环境使用
多个应用服务器(代码)使用的是同一个搜索服务器. - ES本身也可以集群
es支持集群
入门
一、安装es服务端
1)下载
https://www.elastic.co/downloads/elasticsearch
正常请求我们应该在linux或者Docker安装
2) 安装
解压即可
可以修改内存配置
- 启动
bin/elasticsearch.bat
- 测试 -web端口
http://localhost:9200
查询状态
安装客户端
1)curl
windows不支持,需要在linux
2) 火狐的POSTER插件界面
3) kibana
官方推荐
4)前端head比较屌,可以直接看到shard和replica
5)postman
kibana客户端
1)下载
2)安装
解压即可
3)配置
配置服务器地址,编辑config/kibana.yml,设置elasticsearch.url的值为已启动的ES
4) 启动
5) 测试
http://localhost:5601
ES集成ik分词器
DSL
什么是dsl
由ES提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它允许你构建更加复杂、强大的查询。DSL(Domain Specific Language特定领域语言)以JSON请求体的形式出现.
查询字符串模式:GET itsource/employee/_search?q=fullName:倪先华
DSL模式:
GET itsource/employee/_search
{
"query" : {
"match" : {
"fullName" : "倪先华"
}
}
dsl查询–>高级查询+分页+排序+截取字段
GET test/employee/_search
{
"query": {
"match_all": {
}
},
"sort": [
{
"age": {
"order": "desc"
}
}
],
"from": 0,
"size": 2,
"_source": ["name","age"]
}
支持哪些数据类型
① 基本字段类型
字符串、数字、日期、逻辑(boolean)
② 复杂数据类型
对象类型:object
数组类型:array
地理位置:geo_point,geo_shape