班级博客网站模板,wordpress从零开始,邯郸免费网络,自己怎么创建网址文章目录 1.基本概念1.数据格式2.倒排索引 2.HTTP使用1.创建索引#xff08;相当于创建数据库#xff09;2.索引-查询 删除1.查询索引2.查询所有索引3.删除索引 3.创建文档1.创建文档#xff08;不指定id#xff09;2.创建文档#xff08;指定id#xff09; 4.文档… 文章目录 1.基本概念1.数据格式2.倒排索引 2.HTTP使用1.创建索引相当于创建数据库2.索引-查询 删除1.查询索引2.查询所有索引3.删除索引 3.创建文档1.创建文档不指定id2.创建文档指定id 4.文档-查询 查询全部1.根据id查询文档2.查询索引下的所有文档 5.文档-修改 删除1.全量修改2.局部修改3.删除文档 6.ES高级查询1.条件查询2.条件查询请求体方式3.分页查询查询第二页的数据4.分页查询只显示指定字段数据5.分页查询对查询出的结果进行排序6.多条件查询1.must相当于and2.should相当于or3.范围查询价格大于3999 7.完全匹配match是使用的分词加倒排索引相当于模糊查询8.高亮9.分组统计10.求所有价格的平均值11.映射关系1.创建索引 user2.给索引创建映射关系 3.Java API1.环境搭建1.创建项目2.引入依赖3.测试连接4.封装ES连接工具类 2.索引操作1.创建索引1.代码2.结果 2.查询索引3.删除索引 3.文档操作1.添加文档1.实体类2.代码 2.修改文档1.代码2.结果 3.查询文档4.删除文档5.批量新增6.批量删除 4.高级查询1.全量查询2.分页查询3.排序查询4.过滤字段5.组合查询6.高亮查询7.聚合查询 1.基本概念
1.数据格式 2.倒排索引 2.HTTP使用
1.创建索引相当于创建数据库 2.索引-查询 删除
1.查询索引 2.查询所有索引 3.删除索引 3.创建文档
1.创建文档不指定id 2.创建文档指定id 4.文档-查询 查询全部
1.根据id查询文档 2.查询索引下的所有文档 5.文档-修改 删除
1.全量修改 2.局部修改 3.删除文档 6.ES高级查询
1.条件查询 2.条件查询请求体方式 3.分页查询查询第二页的数据 4.分页查询只显示指定字段数据 5.分页查询对查询出的结果进行排序 6.多条件查询
1.must相当于and 2.should相当于or 3.范围查询价格大于3999 7.完全匹配match是使用的分词加倒排索引相当于模糊查询 8.高亮 9.分组统计 10.求所有价格的平均值 11.映射关系
1.创建索引 user 2.给索引创建映射关系 3.Java API
1.环境搭建
1.创建项目 2.引入依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.sunxiansheng/groupIdartifactIdes-demo/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependenciesdependencygroupIdorg.elasticsearch/groupIdartifactIdelasticsearch/artifactIdversion7.8.0/version/dependency!-- es客户端 --dependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-high-level-client/artifactIdversion7.8.0/version/dependencydependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-api/artifactIdversion2.8.2/version/dependencydependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-core/artifactIdversion2.8.2/version/dependencydependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.9.9/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.34/version/dependency/dependencies
/project3.测试连接
package com.sunxiansheng.es;import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;/*** Description: ES测试** Author sun* Create 2024/12/5 19:22* Version 1.0*/
public class ESTest {public static void main(String[] args) {// 连接esRestHighLevelClient client new RestHighLevelClient(RestClient.builder(new HttpHost(152.136.40.209, 9200, http)));// 关闭try {client.close();} catch (Exception e) {e.printStackTrace();}}
}4.封装ES连接工具类
package com.sunxiansheng.es;import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;import java.util.function.Consumer;/*** Description: ES的连接操作工具类** Author sun* Create 2024/12/5 19:37* Version 1.0*/
public class EsUtil {public static void es(ConsumerRestHighLevelClient consumer) {// 连接esRestHighLevelClient client new RestHighLevelClient(RestClient.builder(new HttpHost(152.136.40.209, 9200, http)));consumer.accept(client);// 关闭try {client.close();} catch (Exception e) {e.printStackTrace();}}
}2.索引操作
1.创建索引
1.代码
package com.sunxiansheng.es;import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;import java.io.IOException;/*** Description: 索引操作** Author sun* Create 2024/12/5 19:37* Version 1.0*/
public class Index {public static void main(String[] args) {EsUtil.es((esClient) - {// 创建索引CreateIndexRequest request new CreateIndexRequest(user);// 获取响应结果try {CreateIndexResponse createIndexResponse esClient.indices().create(request, RequestOptions.DEFAULT);if (createIndexResponse.isAcknowledged()) {System.out.println(创建索引成功);} else {System.out.println(创建索引失败);}} catch (IOException e) {throw new RuntimeException(e);}});}
}2.结果 2.查询索引 /*** 查询索引*/Testpublic void getIndex() {EsUtil.es((esClient) - {// 查询索引GetIndexRequest request new GetIndexRequest(user);try {GetIndexResponse getIndexResponse esClient.indices().get(request, RequestOptions.DEFAULT);System.out.println(getIndexResponse.getAliases());System.out.println(getIndexResponse.getMappings());System.out.println(getIndexResponse.getSettings());} catch (IOException e) {throw new RuntimeException(e);}});}3.删除索引 /*** 删除索引*/Testpublic void deleteIndex() {EsUtil.es((esClient) - {// 删除索引try {AcknowledgedResponse acknowledgedResponse esClient.indices().delete(new DeleteIndexRequest(user), RequestOptions.DEFAULT);if (acknowledgedResponse.isAcknowledged()) {System.out.println(删除索引成功);} else {System.out.println(删除索引失败);}} catch (IOException e) {throw new RuntimeException(e);}});}3.文档操作
1.添加文档
1.实体类
package com.sunxiansheng.entity;import lombok.Data;/*** Description: 用户实体类** Author sun* Create 2024/12/5 20:01* Version 1.0*/
Data
public class User {private String name;private Integer age;private String sex;
}2.代码 /*** 添加文档*/Testpublic void addDoc() {EsUtil.es((esClient) - {// 添加文档// 构建一个索引请求IndexRequest request new IndexRequest(user);// 设置文档idrequest.id(1001);// 设置文档内容User user new User();user.setName(张三);user.setAge(20);user.setSex(男);// 将数据转换为json格式ObjectMapper objectMapper new ObjectMapper();try {String userJson objectMapper.writeValueAsString(user);// 设置文档内容request.source(userJson, XContentType.JSON);} catch (JsonProcessingException e) {throw new RuntimeException(e);}// 执行操作try {IndexResponse response esClient.index(request, RequestOptions.DEFAULT);System.out.println(response.getResult() response.getResult());} catch (IOException e) {throw new RuntimeException(e);}});}2.修改文档
1.代码 /*** 修改文档*/Testpublic void updateDoc() {EsUtil.es((esClient) - {// 添加文档// 构建一个索引请求UpdateRequest request new UpdateRequest();request.index(user).id(1001);// 将性别修改为女request.doc(XContentType.JSON, sex, 女);// 执行操作UpdateResponse update null;try {update esClient.update(request, RequestOptions.DEFAULT);} catch (IOException e) {throw new RuntimeException(e);}System.out.println(update.getResult() update.getResult());});}2.结果 3.查询文档 /*** 查询文档*/Testpublic void searchDoc() {EsUtil.es((esClient) - {// 查询指定索引下指定id的文档GetRequest user new GetRequest(user, 1001);try {GetResponse response esClient.get(user, RequestOptions.DEFAULT);System.out.println(response.getSourceAsString() response.getSourceAsString());} catch (IOException e) {throw new RuntimeException(e);}});}4.删除文档
Test
public void deleteDoc() {EsUtil.es((esClient) - {// 删除文档try {DeleteRequest user new DeleteRequest(user, 1001);DeleteResponse response esClient.delete(user, RequestOptions.DEFAULT);System.out.println(response.toString() response.toString());} catch (IOException e) {throw new RuntimeException(e);}});
}5.批量新增 /*** 批量新增*/Testpublic void batchAdditions() {EsUtil.es((esClient) - {BulkRequest bulkRequest new BulkRequest();bulkRequest.add(new IndexRequest(user).id(1002).source(XContentType.JSON, name, 李四));bulkRequest.add(new IndexRequest(user).id(1003).source(XContentType.JSON, name, 王五));try {BulkResponse response esClient.bulk(bulkRequest, RequestOptions.DEFAULT);System.out.println(response.getTook() response.getTook());} catch (IOException e) {throw new RuntimeException(e);}});}6.批量删除 Testpublic void batchDeletion() {EsUtil.es((esClient) - {BulkRequest bulkRequest new BulkRequest();bulkRequest.add(new DeleteRequest(user).id(1002));bulkRequest.add(new DeleteRequest(user).id(1003));try {BulkResponse response esClient.bulk(bulkRequest, RequestOptions.DEFAULT);System.out.println(response.getTook() response.getTook());} catch (IOException e) {throw new RuntimeException(e);}});}4.高级查询
1.全量查询 /*** 全量查询*/Testpublic void fullQuery() {EsUtil.es((esClient) - {SearchRequest request new SearchRequest(user);request.source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()));try {SearchResponse response esClient.search(request, RequestOptions.DEFAULT);SearchHits hits response.getHits();System.out.println(hits.getTotalHits() hits.getTotalHits());hits.forEach(hit - {System.out.println(hit.getSourceAsString() hit.getSourceAsString());});} catch (IOException e) {throw new RuntimeException(e);}});}2.分页查询 /*** 分页查询*/Testpublic void pagingSearch() {EsUtil.es((esClient) - {SearchRequest request new SearchRequest(user);// 条件查询分页查询SearchSourceBuilder builder new SearchSourceBuilder().query(QueryBuilders.matchQuery(name, 李四));builder.from(0);builder.size(1);request.source(builder);try {SearchResponse response esClient.search(request, RequestOptions.DEFAULT);SearchHits hits response.getHits();System.out.println(hits.getTotalHits() hits.getTotalHits());hits.forEach(hit - {System.out.println(hit.getSourceAsString() hit.getSourceAsString());});} catch (IOException e) {throw new RuntimeException(e);}});}3.排序查询 /*** 排序查询*/Testpublic void sortingQueries() {EsUtil.es((esClient) - {SearchRequest request new SearchRequest(user);// 查询所有根据age升序排序SearchSourceBuilder builder new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());builder.sort(age, SortOrder.ASC);request.source(builder);try {SearchResponse response esClient.search(request, RequestOptions.DEFAULT);SearchHits hits response.getHits();System.out.println(hits.getTotalHits() hits.getTotalHits());hits.forEach(hit - {System.out.println(hit.getSourceAsString() hit.getSourceAsString());});} catch (IOException e) {throw new RuntimeException(e);}});}4.过滤字段 /*** 过滤字段*/Testpublic void filterFields() {EsUtil.es((esClient) - {SearchRequest request new SearchRequest(user);SearchSourceBuilder builder new SearchSourceBuilder().query(QueryBuilders.matchAllQuery());// 排除或者包括字段String[] includes {name, age};String[] excludes {};builder.fetchSource(includes, excludes);request.source(builder);try {SearchResponse response esClient.search(request, RequestOptions.DEFAULT);SearchHits hits response.getHits();System.out.println(hits.getTotalHits() hits.getTotalHits());hits.forEach(hit - {System.out.println(hit.getSourceAsString() hit.getSourceAsString());});} catch (IOException e) {throw new RuntimeException(e);}});}5.组合查询 /*** 组合查询*/Testpublic void combinedQueries() {EsUtil.es((esClient) - {SearchRequest request new SearchRequest(user);SearchSourceBuilder builder new SearchSourceBuilder();// 组合查询// BoolQueryBuilder boolQueryBuilder QueryBuilders.boolQuery();// // 性别必须是男// boolQueryBuilder.must(QueryBuilders.matchQuery(sex, 男));// // 年龄可以是22或者23// boolQueryBuilder.should(QueryBuilders.matchQuery(age, 22));// boolQueryBuilder.should(QueryBuilders.matchQuery(age, 23));// // 至少一个 should 条件必须满足// boolQueryBuilder.minimumShouldMatch(1);// builder.query(boolQueryBuilder);// 范围查询年龄大于等于21小于等于22RangeQueryBuilder rangeQueryBuilder QueryBuilders.rangeQuery(age).gte(21).lte(22);builder.query(rangeQueryBuilder);request.source(builder);try {SearchResponse response esClient.search(request, RequestOptions.DEFAULT);SearchHits hits response.getHits();System.out.println(hits.getTotalHits() hits.getTotalHits());hits.forEach(hit - {System.out.println(hit.getSourceAsString() hit.getSourceAsString());});} catch (IOException e) {throw new RuntimeException(e);}});}6.高亮查询 /*** 高亮查询*/Testpublic void highlightedQueries() {EsUtil.es((esClient) - {SearchRequest request new SearchRequest(user);SearchSourceBuilder builder new SearchSourceBuilder();// 高亮查询对name进行高亮builder.query(QueryBuilders.matchQuery(name, 李四));HighlightBuilder highlightBuilder new HighlightBuilder();highlightBuilder.field(name);highlightBuilder.preTags(font colorred);highlightBuilder.postTags(/font);builder.highlighter(highlightBuilder);request.source(builder);try {SearchResponse response esClient.search(request, RequestOptions.DEFAULT);SearchHits hits response.getHits();System.out.println(hits.getTotalHits() hits.getTotalHits());hits.forEach(hit - {System.out.println(hit.getSourceAsString() hit.getSourceAsString());System.out.println(hit.getHighlightFields() hit.getHighlightFields());});} catch (IOException e) {throw new RuntimeException(e);}});}7.聚合查询 /*** 聚合查询*/Testpublic void aggregateSearch() {EsUtil.es((esClient) - {SearchRequest request new SearchRequest(user);SearchSourceBuilder builder new SearchSourceBuilder();// 聚合操作求最大年龄// MaxAggregationBuilder maxAggregationBuilder AggregationBuilders.max(maxAge).field(age);// builder.aggregation(maxAggregationBuilder);// 对年龄进行分组TermsAggregationBuilder ageGroup AggregationBuilders.terms(ageGroup).field(age);builder.aggregation(ageGroup);request.source(builder);try {SearchResponse response esClient.search(request, RequestOptions.DEFAULT);SearchHits hits response.getHits();System.out.println(hits.getTotalHits() hits.getTotalHits());hits.forEach(hit - {System.out.println(hit.getSourceAsString() hit.getSourceAsString());});} catch (IOException e) {throw new RuntimeException(e);}});}