Elasticsearch学习笔记

这篇博客详细介绍了Elasticsearch的基础操作,包括创建、删除索引,新增、修改、删除数据,批量操作,搜索查询,高亮显示,以及聚合查询。还涉及到使用Java与Elasticsearch的交互,如连接ES、数据的增删改查,以及集群环境的搭建和故障处理。同时提到了Elasticsearch的倒排索引原理和全文检索功能。
摘要由CSDN通过智能技术生成

分页查询是在查询体内设置查询的当前位置与每页显示条数:

  1. 分页查询,查询并显示所有数据

{

    "query":{

        "match_all":{//全库查询

        }

    },

    "from"0,//查询从当前位置开始

    "size"2 //每页显示2条数据

}

  1. 分页查询-查询所有数据,并显示指定列

{

    "query":{//查询操作

        "match_all":{//全库查询

        }

    },

    "from"0,//查询起始位置

    "size"2,//每页显示条数

    "_source":["title","kinds"] //指定显示的列

}

3.8 查询排序

  1. 查询排序是在查询结果内指定排序列以及排序方式

{

    "query":{

        "match_all":{

        }

    },

    "from"0,

    "size"3,

    "sort":{//排序

        "price":{//排序列

            "order":"desc"//排序方式

        }

    }

}

  • 全文检索

ES将存入的文档进行分词操作,然后将其存入到倒排索引中,检索是根据倒排索引内的关键字匹配文档。

如果在查询时,向完全匹配查询的结果,那么条件中的match关键字应换为match_phrase

4.1高亮显示的设置

如果想将查询结果中的某些列高亮显示,需要进行如下设置:

高亮结果设置:

  • 聚合操作

聚合操作使用aggs进行

分组操作请求正文:

{

    "aggs": { //聚合操作

        "price_group": { //名称,自定义

            "term": { //分组

                "field""price" //分组字段

            }

        }

    }

}

以上方式会显示具体数据,如果不想显示具体数据可设置具体数据不显示

  1. 求平均值 使用avg,如果不想显示具体数据信息,需要设置size为0

常见的聚合函数:

标识

名称

用途

terms

分组

对查询数据进行分组操作

avg

求平均值

对查询数据求平均值

sum

求和

对查询数据进行求和处理

  • 映射关系

映射关系,主要用于ES控制是否需要分词等属性设置。映射关系的设置,通过请求正文中的properties属性设置

映射关系设置:

  1. 创建索引

  1. 创建索引结构信息

执行结果:

mapping中设置的信息可以使用Get查看

标识

名称

用途

值介绍

示例

index

表示是否能够被索引查询

设置是否能够作为查询条件查询

true:能被索引查询

false:不能被索引查询

例如:如果设置了name不能被索引查询那么如果name作为查询条件,是不能够查询到数据的

type

类型

如果某一列被设置了不能被分词,那么这一列如果作为查询条件时,需要全匹配

text:文本,可以被分词

keywords:不能被分词

例如:name设置了不可分词,那么查询时,需要使用全的名称来进行查询。比如张三,如果不支持分词需要使用完整的“张三”查询,而“张”则不被支持

  • JAVA与ES实现

添加依赖:

<dependencies>

<dependency>

<groupId>org.elasticsearch</groupId>

<artifactId>elasticsearch</artifactId>

<version>7.17.6</version>

</dependency>

<!-- elasticsearch客户端-->

<dependency>

<groupId>org.elasticsearch.client</groupId>

<artifactId>elasticsearch-rest-high-level-client</artifactId>

<version>7.17.6</version>

</dependency>

<!-- elasticsearch依赖log4j-->

<dependency>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-api</artifactId>

<version>2.17.2</version>

</dependency>

<dependency>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-core</artifactId>

<version>2.17.2</version>

</dependency>

<!-- jackson-databind-->

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-databind</artifactId>

<version> 2.13.3</version>

</dependency>

<!-- 单元测试-->

<dependency>

<groupId>org.junit.jupiter</groupId>

<artifactId>junit-jupiter</artifactId>

<version>5.9.1</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>org.projectlombok</groupId>

<artifactId>lombok</artifactId>

<version>1.18.24</version>

</dependency>

</dependencies>

7.1 连接ES

//创建elasticsearch客户端

RestHighLevelClient restHighLevelClient = new RestHighLevelClient(

RestClient.builder(

new HttpHost(URL,PORT,"http")));

//关闭连接客户端

restHighLevelClient.close();

7.2 indices() .create方法创建索引创建索引

封装连接

public class EsConn {

private static final String URL="124.71.74.18";

private static final int PORT=9200;

public static RestHighLevelClient getConnection(){

//创建elasticsearch客户端

RestHighLevelClient restHighLevelClient = new RestHighLevelClient(

RestClient.builder(

new HttpHost(URL,PORT,"http")));

return restHighLevelClient;

}

}

以下所有示例均使用封装的工具类获取连接对象

使用indices() .create创建索引

RestHighLevelClient connection = EsConn.getConnection();//获取连接对象

//获取创建索引请求对象

CreateIndexRequest indexRequest = new CreateIndexRequest("sys_user");//创建一个创建索引请求对象

CreateIndexResponse response = connection

.indices()

.create(indexRequest, RequestOptions.DEFAULT);//创建索引,RequestOptions为默认选项

boolean acknowledged = response.isAcknowledged();//响应状态,创建成功会返回true

//关闭连接客户端

restHighLevelClient.close();

7.3 indices().delete方法删除索引

使用indices().delete方法删除索引

RestHighLevelClient connection = EsConn.getConnection();

//创建请求对象

DeleteIndexRequest sys_user = new DeleteIndexRequest("sys_user");

//

AcknowledgedResponse delete = connection.indices().delete(sys_user, RequestOptions.DEFAULT);

boolean acknowledged = delete.isAcknowledged();//获取响应结果,删除成功返回true

//关闭连接客户端

restHighLevelClient.close();

7.4 indices().get方法查询索引

使用indices()对象的get方法获取索引

RestHighLevelClient connection = EsConn.getConnection();

//创建一个获取索引的对象

GetIndexRequest getIndexRequest = new GetIndexRequest("user");

GetIndexResponse response = connection

.indices()

.get(getIndexRequest, RequestOptions.DEFAULT);

System.out.println(response.getAliases());//别名操作

System.out.println(response.getDataStreams());

System.out.println(response.getIndices());

System.out.println(response.getDefaultSettings());

System.out.println(response.getMappings());

System.out.println(response.getSettings());

connection.close();

elasticsearch 学习笔记包括以下内容: 一、Elasticsearch概述: - Elasticsearch是一种开源的分布式搜索和分析引擎,可以用于快速搜索、分析和存储大量的结构化和非结构化数据。 - Elasticsearch与Solr相比有一些区别,包括用户、开发和贡献者社区的规模和成熟度等方面。 二、Elasticsearch安装: 1. 下载Elasticsearch,可以从官方网站或华为云镜像下载。 2. 安装Elasticsearch。 三、安装head插件: - head插件是一个可视化的管理界面,可以方便地管理和监控Elasticsearch集群。 四、安装Kibana: 1. Kibana是一个开源的数据可视化工具,用于展示和分析Elasticsearch中的数据。 2. 下载Kibana并安装。 3. 启动Kibana并进行访问测试。 4. 可选的汉化操作。 五、ES核心概念理解: - 学习ES的核心概念,包括索引、文档、映射、查询等。 以上是elasticsearch学习笔记的主要内容,希望对你有帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Elasticsearch 学习笔记(上)](https://blog.csdn.net/m0_52691962/article/details/127064350)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值