ElasticSearch基础知识

本文详细介绍了ElasticSearch的基础知识,包括启动配置、客户端安装、数据格式、索引操作等内容,并通过实例演示了如何使用Java API进行索引的创建、查询、删除及文档的增删改查等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ElasticSearch基础知识

学习地址:尚硅谷
看到第24集

es是什么

在这里插入图片描述

启动es

在这里插入图片描述
访问
在这里插入图片描述
在这里插入图片描述

常见问题

1.ElasticsearchException[X-Pack is not supported and Machine Learning is not available for

解决:在config/elasticsearch.yml添加一条配置:

xpack.ml.enabled: false

客户端安装

在这里插入图片描述

数据格式

倒排索引和正排索引
在这里插入图片描述
在这里插入图片描述

索引操作

在这里插入图片描述
索引创建过程
PUT请求具有密等性
在这里插入图片描述

索引查询和删除

查询
在这里插入图片描述
查看创建的所有索引的信息
访问地址:

http://localhost:9200/_cat/indices?v

在这里插入图片描述
在这里插入图片描述
删除索引
在这里插入图片描述

文档创建

在这里插入图片描述

创建文档
在这里插入图片描述
创建自己的文档id
在这里插入图片描述
查询索引中指定id的数据
在这里插入图片描述

查询索引下的所有数据
在这里插入图片描述

数据的修改

测试数据

{
    "title":"es的学习",
    "name":"hjx",
    "time":"2021-12-23"
}
全量修改

在这里插入图片描述

局部修改

在这里插入图片描述

删除操作

在这里插入图片描述

查询操作

条件查询

http://localhost:9200/shopping/_search?q=price:100

在这里插入图片描述
上面这种查询方式不方便(因为查询条件是在url中的,下面这种将查询条件放入请求体中)
在这里插入图片描述

在这里插入图片描述

使用请求体全部查询
在这里插入图片描述

分页查询

from:表示当前页数据的起始位置
size:每页查询的数据条数
在这里插入图片描述

显示指定字段的数据
在这里插入图片描述
在这里插入图片描述

查询排序

在这里插入图片描述

多条件查询

在这里插入图片描述
在这里插入图片描述
注意:这里的must相当于mysql中的and 连接符

{
    "query":{
        "bool":{
            "must":[
                {
                    "match":{
                        "price":23
                    }
                },
                {
                    "match":{
                        "title":"JSP入门"
                    }
                },
            ]
        }
    }
}

或查询
在这里插入图片描述

范围查询
在这里插入图片描述

全文检索、完全匹配、高亮查询

全文检索

注意:这种查询方式会将含有其中一个词的数据的每条数据都查询出来
在这里插入图片描述

完全匹配

在这里插入图片描述

高亮查询

在这里插入图片描述

聚合查询

在这里插入图片描述

查询平均值
在这里插入图片描述

映射关系

创建映射

在这里插入图片描述
在这里插入图片描述

体现映射效果

在这里插入图片描述

java api操作es

环境准备

<dependencies>
        <!-- https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch -->
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>7.11.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.elasticsearch.client/elasticsearch-rest-high-level-client -->
        <!--        elasticsearsh的客户端-->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.11.2</version>
        </dependency>

<!--
        elasticsearch依赖 log4j依赖
-->
        <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.10.0</version>
        </dependency>

<!--        json转换-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.9.3</version>
        </dependency>

<!--        junit单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

创建连接

//		创建es客户端
		RestHighLevelClient client=new RestHighLevelClient(
				RestClient.builder(new HttpHost("localhost",9200,"http"))
		);
		client.close();

创建索引

//		创建es客户端
		RestHighLevelClient client=new RestHighLevelClient(
				RestClient.builder(new HttpHost("localhost",9200,"http"))
		);
//		创建索引
		CreateIndexRequest request=new CreateIndexRequest("fruit"); // 索引名称
		CreateIndexResponse response =client.indices().create(request, RequestOptions.DEFAULT);

//		响应状态
		boolean acknowledged=response.isAcknowledged();
		System.out.println("索引操作:"+acknowledged);
		client.close();

索引查询

//		创建es客户端
		RestHighLevelClient client=new RestHighLevelClient(
				RestClient.builder(new HttpHost("localhost",9200,"http"))
		);
//		查询索引
		GetIndexRequest request=new GetIndexRequest("fruit");
		GetIndexResponse response=client.indices().get(request, RequestOptions.DEFAULT);
//		响应状态
		System.out.println(response.getAliases());
		System.out.println(response.getMappings());
		System.out.println(response.getSettings());

索引删除

//		创建es客户端
		RestHighLevelClient client=new RestHighLevelClient(
				RestClient.builder(new HttpHost("localhost",9200,"http"))
		);
//		查询索引
		DeleteIndexRequest request=new DeleteIndexRequest("fruit");

		AcknowledgedResponse response=client.indices().delete(request, RequestOptions.DEFAULT);
//		响应状态
		System.out.println(response.isAcknowledged());入代码片

索引添加数据

//		创建es客户端
		RestHighLevelClient client=new RestHighLevelClient(
				RestClient.builder(new HttpHost("localhost",9200,"http"))
		);
//		插入数据
		IndexRequest request=new IndexRequest();
		request.index("fruit").id("101");

//		设置对象数据
		Fruit fruit=new Fruit();
//		fruit.setId();
		fruit.setName("苹果");
		fruit.setPrice(5.5);
		fruit.setColor("yellow");
//		client.index(request, RequestOptions.DEFAULT);

//		注意:将数据插入之前,必须转换为json
		ObjectMapper objectMapper=new ObjectMapper();
		String fruit_json=objectMapper.writeValueAsString(fruit);
		request.source(fruit_json, XContentType.JSON);

		IndexResponse response=client.index(request,RequestOptions.DEFAULT);
		System.out.println(response.getResult());
//		关闭资源
		client.close();

索引修改

局部数据修改

//		创建es客户端
		RestHighLevelClient client=new RestHighLevelClient(
				RestClient.builder(new HttpHost("localhost",9200,"http"))
		);
//		修改数据
		UpdateRequest request=new UpdateRequest();
		request.index("fruit").id("101");
		request.doc(XContentType.JSON,"name","橘子");
		UpdateResponse response=client.update(request, RequestOptions.DEFAULT);
		System.out.println("响应状态:"+response.getResult());

查询某条数据

//		创建es客户端
		RestHighLevelClient client=new RestHighLevelClient(
				RestClient.builder(new HttpHost("localhost",9200,"http"))
		);
		GetRequest request=new GetRequest();
		request.index("fruit").id("101");
		GetResponse response=client.get(request,RequestOptions.DEFAULT);
		System.out.println(response.getSourceAsString());

删除某条数据

//		创建es客户端
		RestHighLevelClient client=new RestHighLevelClient(
				RestClient.builder(new HttpHost("localhost",9200,"http"))
		);
		DeleteRequest request=new DeleteRequest();
		request.index("fruit").id("101");

		DeleteResponse response=client.delete(request, RequestOptions.DEFAULT);
		System.out.println(response);
		//		关闭资源
		client.close();

批量新增

//		创建es客户端
		RestHighLevelClient client=new RestHighLevelClient(
				RestClient.builder(new HttpHost("localhost",9200,"http"))
		);
		BulkRequest request=new BulkRequest();

		Fruit fruit1=new Fruit();
		fruit1.setName("黄瓜");
		fruit1.setPrice(5);
		fruit1.setColor("green");

		Fruit fruit2=new Fruit();
		fruit2.setName("西红柿");
		fruit2.setPrice(3);
		fruit2.setColor("red");

		Fruit fruit3=new Fruit();
		fruit3.setName("橙子");
		fruit3.setPrice(8.7);
		fruit3.setColor("yellow");


		request.add(new IndexRequest().index("fruit").id("101").source(XContentType.JSON,"name","西红柿","price",3, "color","red"));
		request.add(new IndexRequest().index("fruit").id("102").source(XContentType.JSON,"name","黄瓜","price",5, "color","green"));
		request.add(new IndexRequest().index("fruit").id("103").source(XContentType.JSON,"name","橙子","price",8.7, "color","yellow"));

		BulkResponse response=client.bulk(request, RequestOptions.DEFAULT);
		System.out.println(response.getTook());
		System.out.println(response.getItems());
		client.close();

批量删除

//		创建es客户端
		RestHighLevelClient client=new RestHighLevelClient(
				RestClient.builder(new HttpHost("localhost",9200,"http"))
		);
		BulkRequest request=new BulkRequest();

//		request.add(new DeleteRequest().index("fruit").id("101"));
		request.add(new DeleteRequest().index("fruit").id("102"));
		request.add(new DeleteRequest().index("fruit").id("103"));

		BulkResponse response=client.bulk(request, RequestOptions.DEFAULT);
		System.out.println(response.getTook());
		System.out.println(response.getItems());
		client.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值