龙空技术网

用熟悉的SQL来操作Elasticsearch,拥有你自己的搜索引擎

狂野的呼喊 158

前言:

如今兄弟们对“基于es的搜索引擎有哪些方法”都比较关切,看官们都想要了解一些“基于es的搜索引擎有哪些方法”的相关知识。那么小编在网摘上汇集了一些有关“基于es的搜索引擎有哪些方法””的相关文章,希望大家能喜欢,各位老铁们一起来学习一下吧!

ElasticSearch是一款分布式、RestApi风格、开源的全文本搜索引擎。我们可以基于它做数据存储、数据分析、数据查询。

为啥要用它,为啥它会流行呢?

开源,我们可以拥有自己的搜索引擎支持各种部署方式,从单机,集群,linux,windows,docker,k8s等,满足了各种场景应用需求,向后兼容,与时俱进提供了restapi供用户使用已经有spring-elasticsearch集成支持,不用直接面对es自己的语法即插即用,配置简单es插件丰富配合elastic公司套件,快速提供常用分析系统基础社区活跃,已与阿里巴巴/腾讯达成战略合作

废话少说,开整!

下载安装启动验证

下载地址:

解压后即可启动。

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 
实用插件推荐:elasticsearch-sql

使用您的 SQL 技能在 Elasticsearch 内搜索数据,通过您熟悉的语言驾驭 Elastic 的巨大威力。通过 CLI、REST 端点、ODBC或 JDBC 发送 SQL 查询,以全新速度获得结果。

用kibana devtool运行

elasticsearch-sql插件安装

先从github上下载master源码

然后解压,在本地用mvn编译:

#mvn clean package assembly:single -DskipTests

编译成功后会在本目录下生成target文件夹,

其中的elasticsearch.zip为目标插件

测试插件:

 * 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了。

这为我们分析纷繁复杂的日志数据提供了强大的能力。

下讲可以说说数据采集与接入了:各种Beat和Logstash。

Just Beat It

Just Beat It

Just Beat It

标签: #基于es的搜索引擎有哪些方法