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

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

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

废话少说,开整!

下载安装启动验证

下载地址:https://www.elastic.co/cn/downloads/elasticsearch

解压后即可启动。

  • linux启动

试运行,es运行需要jvm,支持的最低版本为jdk1.8

#elasticsearch
以后台模式运行
#elasticsearch -d

#检查是否安装成功

http://localhost:9200

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

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐