背景
1.在海量数据中执行搜索功能时,如果使用mysql效率太低。
2.如果关键字搜索不准确,还需要获取到想要的数据。
3.搜索出的结果集关键字标红展示。
Es介绍
Es是使用java语言开发的基于lucene编写的搜索引擎框架,他提供了分布式的全文搜索的功能,并且提供了统一的基于
RESTful风格的web接口。
lucene:本身就是Apache开源的底层搜索引擎,直接使用成本太高。
分布式:主要是提供高扩展能力。
全文检索:将一段词语进行分词,并且将分词后的词语进行分词库存储。搜索时先去分词库中搜索,然后通过分词库ID进行数据返回。
RESTful风格接口:操作简单,只需要发送http请求。
倒排索引
将存放的数据以一定的方式进行分词,并且将分词后的内容存放到分词库中。
当用户进行查询时,会将查询关键字进行分词,然后去分词库中检索内容,最终得到内容的数据标示ID。
最后通过数据标示ID去存放数据的地方返回指定的数据。
![](https://i-blog.csdnimg.cn/blog_migrate/36a353de8b336b627147bbe0a366656e.png)
安装Es及kibana
通过docker composer安装
vi docker-compose.yml
`````
version: '2'
services:
elasticsearch:
container_name: elasticsearch #容器名称
image: daocloud.io/library/elasticsearch:6.5.4 #镜像地址 版本号要对应
ports:
- "9200:9200” #es服务端口映射
environment: # 通过 environment 为容器设置环境变量
- "ES_JAVA_OPTS=-Xms64m -Xmx128m"
- "discovery.type=single-node"
- "COMPOSE_PROJECT_NAME=elasticsearch-server"
restart: always # docker重启时自动重启
kibana:
container_name: kibana
image: daocloud.io/library/kibana:6.5.4
ports:
- "5601:5601"
restart: always
environment:
- ELASTICSEARCH_HOSTS=http://127.0.0.1:9200
``````
执行yml文件
docker-compose up -d
启动成功后进入es容器进行安装ik分词器
docker exec -it elasticsearch bash
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.5.4/elasticsearch-analysis-ik-6.5.4.zip
安装完成后记得重启elasticsearch容器使ik分词器生效
在浏览器输入 elasticsearch的地址如:127.0.0.1:9200
````
{
"name" : "TLnV6Iw",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "sKZ_OtECSnK9l0CO3vWsCg",
"version" : {
"number" : "6.5.4",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "d2ef93d",
"build_date" : "2018-12-17T21:17:40.758843Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
````
恭喜安装成功
我们继续看下kibana 127.0.0.1:5601