用熟悉的SQL来操作ElasticSearch,拥有你自己的搜索引擎
ElasticSearch是一款分布式、RestApi风格、开源的全文本搜索引擎。我们可以基于它做数据存储、数据分析、数据查询。为啥要用它,为啥它会流行呢?开源,我们可以拥有自己的搜索引擎支持各种部署方式,从单机,集群,linux,windows,docker,k8s等,满足了各种场景应用需求,向后兼容,与时俱进提供了restapi供用户使用已经有spring-elastics...
ElasticSearch是一款分布式、RestApi风格、开源的全文本搜索引擎。我们可以基于它做数据存储、数据分析、数据查询。
为啥要用它,为啥它会流行呢?
- 开源,我们可以拥有自己的搜索引擎
- 支持各种部署方式,从单机,集群,linux,windows,docker,k8s等,满足了各种场景应用需求,向后兼容,与时俱进
- 提供了restapi供用户使用
- 已经有spring-elasticsearch集成支持,不用直接面对es自己的语法
- 即插即用,配置简单
- es插件丰富
- 配合elastic公司套件,快速提供分析系统基础
- 社区活跃,与阿里巴巴/腾讯达成斩落合作。
废话少说,开整!
下载安装启动验证
下载地址:https://www.elastic.co/cn/downloads/elasticsearch
解压后即可启动。
- linux启动
试运行,es运行需要jvm,支持的最低版本为jdk1.8
#elasticsearch
以后台模式运行
#elasticsearch -d
#检查是否安装成功
- docker启动
docker镜像拉取
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.2
运行es容器
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.6.2
常用配置修改
配置文件:elasticsearch.yml
绑定服务地址或域名:#network.host: 133.128.41.153
端口:#http.port: 9200
搜索引擎的数据存储,最好单独存到一个数据盘,因为会越来越大
存储位置配置:#path.data: /elasticsearch/data1,/elasticsearch/data2
支持配置多个目录
插件安装
#查询目前安装的插件列表:
elasticsearch-plugin list
#安装es插件
elasticsearch-plugin install file:///~/elasticsearch-sql.zip
实用插件推荐:elasticsearch-sql
使用您的 SQL 技能在 Elasticsearch 内搜索数据,通过您熟悉的语言驾驭 Elastic 的巨大威力。通过 CLI、REST 端点、ODBC或 JDBC 发送 SQL 查询,以全新速度获得结果。
elasticsearch-sql插件安装
先从github上下载master源码
然后解压,在本地用mvn编译:
#mvn clean package assembly:single -DskipTests
编译成功后会在本目录下生成target文件夹,
其中的elasticsearch.zip为目标插件
测试插件:
http://localhost:9200/_sql?sql=select * from logstash-index1 limit 10
常用es接口
#查询ES中所有索引:
curl 'localhost:9200/_cat/indices?v'
#删除索引,支持通配符
curl -XDELETE localhost:9200/logstash-2017*
#已有索引新增字段并赋值
curl -POST localhost:9200/my_index/_update_by_query -d '
{
"script":{
"lang":"painless",
"inline":"if (ctx._source.status == null) {ctx._source.status= '02'}"
}
}'
#根据条件获取记录:
host:port/indexName/${_type}/${_id}/
curl localhost:9200/logstash-2020.04.19/log/AV2lr6B97SJZqxwZjhpG/
创建索引别名,这是个很有用的骚操作
比如一批索引想拿一个index查询,可以用别名
curl -XPOST 'localhost:9200/_aliases -d '{"actions":[{"add":{"index":"indexName","alias":"aliasName"}}]}'
springboot集成elasticsearch
引入maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
es配置
spring:
data:
elasticsearch:
cluster-nodes: localhost:9200
cluster-name: test
repositories:
enabled: true
调用查询接口:
// 构造分页类
Pageable pageable = PageRequest.of(page, size);
// 构造查询 NativeSearchQueryBuilder
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder()
.withPageable(pageable)
;
if (!StringUtils.isEmpty(keyword)) {
// keyword must not null
searchQueryBuilder.withQuery(QueryBuilders.queryStringQuery(keyword));
}
SearchQuery searchQuery = searchQueryBuilder.build();
// page search
Page<JSONObject> resultPage = elasticsearchTemplate.queryForPage(searchQuery, JSONObject.class);
如果使用elasticsearch-sql插件,那我们的查询就是些sql了。
更多推荐
所有评论(0)