首页 > 其他分享 >Elasticsearch 保姆级入门篇

Elasticsearch 保姆级入门篇

时间:2023-08-25 19:02:15浏览次数:50  
标签:文档 elastic Kibana 入门篇 保姆 Elasticsearch new elasticsearch docker


Elasticsearch 是一个分布式的、面向生产规模工作负载优化的搜索引擎。

Kibana 可以将 Elasticsearch 中的数据转化为直观的图表、图形和仪表盘。

这篇文章,您将学习本地安装 Elasticsearch 和 Kibana,以及使用开发工具/ Java SDK 创建索引和搜索数据。

1 本地安装

1.1 创建网络

我们需要创建一个供 Elasticsearch 和 Kibana 使用的 network。这个 network 将被用于 Elasticsearch 和 Kibana 之间的通信。

docker network create elastic

1.2 安装 ES

拉取 Elasticsearch 镜像

docker pull docker.elastic.co/elasticsearch/elasticsearch:{version}

这里的版本 version ,我们选取:8.9.0

docker pull docker.elastic.co/elasticsearch/elasticsearch:8.9.0

启动 docker elasticsearch 镜像

docker run --name elasticsearch --net elastic -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -t docker.elastic.co/elasticsearch/elasticsearch:8.9.0

修改 elasticsearch 用户密码

bin/elasticsearch-reset-password --username elastic -i

1.3 安装 Kibana

拉取 Kibana 镜像

docker pull docker.elastic.co/kibana/kibana:8.9.0

启动 Kibana 镜像

docker run --name kibana --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.9.0

因为启动安装 Kibana ,需要 token , 所以进入 elasticsearch 容器 ,执行:

bin/elasticsearch-create-enrollment-token -s kibana

输入 token 之后,刷新页面,进入登录页面:

2 接口测试

我们可以使用 Kibana Dev tools 来进行接口测试。

2.1 添加

向索引添加单个文档,提交一个 HTTP POST 请求,目标是该索引。

POST /customer/_doc/1
{
  "firstname": "Jennifer",
  "lastname": "Walters"
}

该请求会自动创建名为customer的索引(如果不存在),然后添加一个 ID 为 1的新文档,同时存储并建立firstnamelastname字段的索引。

新文档可以立即从集群中的任何节点获取。您可以使用 GET 请求来检索它,请求中需指定其文档 ID :

GET /customer/_doc/1

要一次性添加多个文档,请使用 _bulk API。批量数据必须是以换行分隔的 JSON(NDJSON)格式。每一行必须以换行字符(\n)结尾,包括最后一行。

PUT customer/_bulk
{ "create": { } }
{ "firstname": "Monica","lastname":"Rambeau"}
{ "create": { } }
{ "firstname": "Carol","lastname":"Danvers"}
{ "create": { } }
{ "firstname": "Wanda","lastname":"Maximoff"}
{ "create": { } }
{ "firstname": "Jennifer","lastname":"Takeda"}

2.2 搜索

已索引的文档可以在准实时的情况下进行搜索。下面的搜索将在customer索引中匹配所有名为 Jennifer 的顾客。

GET customer/_search
{
  "query" : {
    "match" : { "firstname": "Jennifer" }
  }
}

2.3 视图

进入 Kibana Data Views :

然后创建数据视图 :

创建数据视图之后,可以在 Analytics > Discover 查看索引数据。

3 Java SDK 实战

3.1 依赖

<dependency>
    <groupId>co.elastic.clients</groupId>
    <artifactId>elasticsearch-java</artifactId>
    <version>8.9.0</version>
</dependency>

<dependency>
    <groupId>io.github.hakky54</groupId>
    <artifactId>sslcontext-kickstart</artifactId>
    <version>7.1.0</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.3</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.12.3</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.12.3</version>
</dependency>

<dependency>
    <groupId>jakarta.json</groupId>
    <artifactId>jakarta.json-api</artifactId>
    <version>2.0.1</version>
</dependency>

<!-- 强制走高版本 ,防止和springboot 依赖冲突  -->
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-client</artifactId>
    <version>8.9.0</version>
</dependency>

3.2 创建客户端

RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "https"));

final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "ilxw@19841201"));

// Elasticsearch 提供了 Https 服务,创建 client 建立 SSL 链接时没有做证书验证 ;
SSLFactory sslFactory = SSLFactory.builder().withUnsafeTrustMaterial().withUnsafeHostnameVerifier().build();
builder = builder.setHttpClientConfigCallback(
                   httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider)
                                 setSSLContext(sslFactory.getSslContext())
                                .setSSLHostnameVerifier(sslFactory.getHostnameVerifier())
        );

RestClient restClient = builder.build();

// Create the transport with a Jackson mapper
ElasticsearchTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());

// And create the API client
ElasticsearchClient esClient = new ElasticsearchClient(transport);

3.3 创建文档

创建索引名为 products ,新建一个文档 id 为 1 。

ProductPo product = new ProductPo(1, "Bag", 42);

IndexRequest<Object> indexRequest = new IndexRequest.Builder<>().index("products").id(String.valueOf(product.getId())).document(product).build();

IndexResponse response = esClient.index(indexRequest);

System.out.println("Indexed with version " + response.version());

3.4 查询文档

GetResponse<ProductPo> response = esClient.get(g -> g
                .index("products")
                .id(String.valueOf(1)),
        ProductPo.class
);

if (response.found()) {
    ProductPo product = response.source();
    System.out.println("Product name " + product.getName());
} else {
    System.out.println("Product not found");
}

3.5 修改文档

 Map<String, Object> doc = new HashMap<String, Object>();
 //文档产品名称调整为 my bike
 doc.put("name", "my bike");
 doc.put("price", 100);

 BulkOperation op = new BulkOperation.Builder().update(
        						 i -> i.action(new UpdateAction.Builder<>().doc(doc).docAsUpsert(true).build()).id("1"))
         						 .build();

   List<BulkOperation> list = Collections.singletonList(op);
   BulkResponse response = esClient.bulk(bulkBuilder -> bulkBuilder.index("products").operations(list));

参考文档:

1、Elasticsearch 官方文档:

https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/getting-started-java.html

2、Github文档

https://github.com/elastic/elasticsearch

转 https://www.cnblogs.com/makemylife/p/17632780.html

标签:文档,elastic,Kibana,入门篇,保姆,Elasticsearch,new,elasticsearch,docker
From: https://www.cnblogs.com/wl-blog/p/17657745.html

相关文章

  • 在Vue3中使用 Pinia 保姆教程
    前言Vue3是Vue3是一款非常流行的JavaScript框架,它的出现为我们开发Web应用程序提供了更加高效和便捷的方式。在Vue3中,我们可以使用Pinia来进行状态管理,这是一个非常流行的状态管理库,它可以帮助我们更好地组织和管理应用程序的状态。在本文中,我们将探讨如何使用Vue3和Pinia,并持久化......
  • CMake保姆级教程
    来源哔哩哔哩2.编写一个简单的CMakeLists.txt文件_哔哩哔哩_bilibiliCMake保姆级教程(上)|爱编程的大丙(subingwen.cn)......
  • docker安装elasticsearch和kibana
    下载镜像和启动镜像:dockersearchelasticsearchdockerpullnshou/elasticsearch-kibanadockerrun-d-p9200:9200-p9300:9300-p5601:5601--nameeskibananshou/elasticsearch-kibana访问:http://127.0.0.1:9200/访问:http://127.0.0.1:5601/参考:http://www.51gjie.com......
  • elasticsearch from + size must be less than or equal to: [10000] but was [100000
    说明:当分页查询时,默认最大总数是10000(from+size<=10000),当我现在业务需要查询最大100000条时,就报错了。方案1:可以为某个es放开到指定的返回总数,也可以对整个es的索引做设置。但这样对内存消耗很大,可能导致内存溢出,elasticsearch重启又会恢复默认10000基于特定索引生效配置......
  • Spring Boot + Spring Batch 实现批处理任务,保姆级教程!(场景实战)
    来源:blog.csdn.net/qq_35387940/article/details/108193473前言概念词就不多说了,我简单地介绍下,springbatch是一个方便使用的较健全的批处理框架。为什么说是方便使用的,因为这是基于spring的一个框架,接入简单、易理解、流程分明。为什么说是较健全的,因为它提供了往......
  • 深入理解Elasticsearch倒排索引原理与优化策略
    深入理解Elasticsearch倒排索引原理与优化策略在现代软件开发中,大规模数据处理和搜索引擎功能已经成为后端开发的重要组成部分。Elasticsearch作为一个强大的搜索和分析引擎,以其高效的搜索能力和灵活的分布式架构受到了广泛关注。在本文中,我们将深入探讨Elasticsearch的核心之一—......
  • elasticsearch创建索引带mappings和settings
    一、通过kabana控制台创建我们在kabana控制台创建一个record_feature_tag的索引,对应的mapping配置如下PUT/record_feature_tag{"mappings":{"properties":{"_class":{"type":"keyword"},&quo......
  • Elasticsearch查询更新
    Elasticsearch支持多种查询和更新操作。以下是一些常见的查询和更新操作示例:查询所有文档:根据条件查询文档:GET/index_name/_search{"query":{"match":{"field_name":"search_term"}}}更新文档:POST/index_name/_up......
  • elasticsearch
    最典型的是两个应用场景:全文检索 和 复杂查询。正排索引,也叫正向索引(ForwardIndex),是通过文档ID去查找关键词(文档内容)。倒排索引,也叫反向索引(InvertedIndex),是通过关键词查找文档ID。must:其查询子句必须全部被满足,逻辑相当于and,并且会计算分数。filter:与must作用一......
  • CAN通讯-使用Python收发CAN数据保姆级教程(包含完整代码)
    CAN通讯-使用Python收发CAN数据配置环境1.环境配置1.1安装CAN通讯需要的包1.2安装kvaser_drivers以及KvaserCanKing2.使用Python收发数据2.1接发数据代码如下:2.1.1接收数据代码2.1.2发送数据代码2.2验证发送数据2.2.1使用KvaserCanKing接收数据2.2.2......