当前位置: 首页 > news >正文

网站被黑客攻击怎么办东莞seo优化公司

网站被黑客攻击怎么办,东莞seo优化公司,三级分销模式,免费开网站引言 在现代应用开发中,Elasticsearch作为一个强大的搜索引擎和分析引擎,已经成为许多项目不可或缺的一部分。Spring Boot作为Java生态中最受欢迎的微服务框架之一,其对Elasticsearch的支持自然也是开发者关注的焦点。本文将详细介绍如何在S…

引言

在现代应用开发中,Elasticsearch作为一个强大的搜索引擎和分析引擎,已经成为许多项目不可或缺的一部分。Spring Boot作为Java生态中最受欢迎的微服务框架之一,其对Elasticsearch的支持自然也是开发者关注的焦点。本文将详细介绍如何在Spring Boot 2.6版本中集成Elasticsearch 7.17版本,并提供一些基本的操作指南。

基础环境

JDK 17 (SpringBoot 2.6.13 要求JDK版本为JDK17)
Elasticsearch (7.17.16)

版本探讨

springboot提供了spring-boot-starter-data-elasticsearch 可以供我们方便的集成es ,但是需要重点强调的是 几个组件间的版本兼容性 。这个可以直接参考官方文档中的版本说明
在这里插入图片描述
其他的版本 spring-data-elasticsearch 文档总目录参见 :
https://docs.spring.io/spring-data/elasticsearch/docs/
看这个文档说明 springboot 2,6.12 可使用 spring data starter 2.6.12版本 内置的 spring-data-elasticsearch 是4.3.9 看文档描述是支持的,但是实际测试过程中,会有各种各样的报错

这里直接推荐一个 可使用的spring data starter es 版本

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId><version>2.7.18</version><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions>
</dependency>

名称解释

  1. 文档(Document)
    在Elasticsearch中,文档是存储数据的最小单位。它相当于关系型数据库中的一行记录。文档以JSON格式存储,可以包含多个字段,这些字段可以是简单的数据类型(如字符串、整数、布尔值)或复杂的数据类型(如嵌套对象、数组等)。

  2. 索引(Index)
    索引是一组文档的集合,类似于关系型数据库中的一个表。索引用于存储、搜索和检索文档。在Elasticsearch中,索引是有类型的,但类型的概念在Elasticsearch 6.x中已被弃用。索引可以配置不同的设置,如分片数、副本数、映射和分析器等。

  3. 映射(Mapping)
    映射定义了文档的结构,包括字段的名称、字段的数据类型和一些其他设置,如是否存储、是否索引等。映射可以在创建索引时定义,也可以在索引创建后动态添加字段。

集成

添加依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId><version>2.7.18</version><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions>
</dependency>

添加配置

spring:application:name: xxxxelasticsearch:connection-timeout: 3ssocketTimeout: 3suris: http://xxx:30859# 可选则配置账号密码#username: sxx#password: xxx

添加文档 实体类

定义文档实体类,这些类对应于Elasticsearch索引中的文档。

以下是一些常用的注解和它们的用途。

  1. @Document 注解
    @Document注解用于标识一个类作为Elasticsearch文档,并指定该类的实例应该存储在哪个索引中。
import org.springframework.data.annotation.Document;@Document(indexName = "my_index")
public class MyDocument {// 类成员
}

indexName:指定文档存储的索引名称。

  1. @Id 注解
    @Id注解用于标识文档的唯一标识符字段。
import org.springframework.data.annotation.Id;public class MyDocument {@Idprivate String id;// 其他字段和方法
}

@Id:标记字段作为文档的ID。
3. @Field 注解
@Field注解用于指定字段的映射类型和名称。

import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;public class MyDocument {@Field(type = FieldType.Text)private String content;// 其他字段和方法
}

type:指定字段的Elasticsearch映射类型,如FieldType.Text、FieldType.Date等。
name:指定字段在Elasticsearch中的名称,默认使用Java字段名。
4. @Fields 注解
@Fields注解用于定义多个字段,通常用于复杂类型或嵌套对象。

import org.springframework.data.elasticsearch.annotations.Fields;public class MyDocument {@Fields({@Field(name = "first_name", type = FieldType.Text),@Field(name = "last_name", type = FieldType.Keyword)})private Name name;// 其他字段和方法
}public class Name {private String firstName;private String lastName;
}
  1. @MultiField 注解
    @MultiField注解用于创建包含多个字段的复合字段,例如,一个主字段和一个用于排序的子字段。
import org.springframework.data.elasticsearch.annotations.MultiField;
import org.springframework.data.elasticsearch.annotations.FieldType;public class MyDocument {@MultiField(mainField = @Field(type = FieldType.Text), subFields = {@Field(name = "raw", type = FieldType.Keyword)})private String name;// 其他字段和方法
}
  1. @GeoPoint 注解
    @GeoPoint注解用于标记地理位置字段。
import org.springframework.data.elasticsearch.annotations.GeoPoint;
import org.springframework.data.elasticsearch.annotations.Field;public class MyDocument {@GeoPoint@Field(type = FieldType.GeoPoint)private String location;// 其他字段和方法
}
  1. @Completion 注解
    @Completion注解用于标记Elasticsearch的完成建议字段。
import org.springframework.data.elasticsearch.annotations.Completion;public class MyDocument {@Completionprivate String suggestion;// 其他字段和方法
}
  1. @DateTimeFormat 注解
    @DateTimeFormat注解用于指定日期字段的格式。
import org.springframework.data.elasticsearch.annotations.DateTimeField;
import org.springframework.data.elasticsearch.annotations.DateTimeFormat;
import java.time.LocalDateTime;public class MyDocument {@DateTimeField(format = DateTimeFormat.ofPattern("yyyy-MM-dd HH:mm:ss"))private LocalDateTime timestamp;// 其他字段和方法
}
  1. @Version 注解
    @Version注解用于标记文档的版本字段。
import org.springframework.data.annotation.Version;public class MyDocument {@Versionprivate Long version;// 其他字段和方法
}
  1. @Score 注解
    @Score注解用于标记查询得分字段。
import org.springframework.data.elasticsearch.annotations.Score;public class MyDocument {@Scoreprivate Double score;// 其他字段和方法
}

这些注解共同构成了Spring Data Elasticsearch中文档实体类的框架,允许您以声明式的方式定义文档的结构和特性。通过这些注解,您可以轻松地将Java对象映射到Elasticsearch文档,并利用Spring Data Elasticsearch提供的Repository抽象来执行CRUD操作。

/*** 搜索数据 索引** @author leon* @date 2024-11-21 16:16:54*/
@Document(indexName = "search_data_index")
@Data
public class SearchDataDoc {/*** id 标识*/@Idprivate Long id;/*** 名称*/private String name;/*** 备注*/private String remark;/*** 创建时间*/@Field(type = FieldType.Date)private Date createdTime;/*** 修改时间*/@Field(type = FieldType.Date)private Date modifiedTime;}

定义操作文档的 CURD 仓库类

@Repository
public interface SearchDataDocRepository extends ElasticsearchRepository<SearchDataDoc, Long> {
}

实际使用

主要会使用到两种 第一个是 ElasticsearchOperations 引入spring data es starter 直接注入即可使用

ElasticsearchOperations 是 Spring Data Elasticsearch 提供的一个核心接口,它封装了与 Elasticsearch 交互的常用操作。这个接口继承自 ElasticsearchOperations,提供了一组丰富的方法,允许你在应用程序中执行各种 Elasticsearch 查询和操作。以下是 ElasticsearchOperations 接口的一些关键功能:
1.索引管理
createIndex(String indexName):创建一个新的索引。
deleteIndex(String indexName):删除一个索引。
indexExists(String indexName):检查索引是否存在。
2.文档操作
index(String indexName, String documentId, String documentSource):向指定索引添加或更新文档。
get(String indexName, String documentId, Class clazz):根据 ID 获取文档。
delete(String indexName, String documentId):根据 ID 删除文档。
3.查询执行
query(String query, Class clazz):执行一个 Elasticsearch 查询,并返回结果集。
query(String query, String indexName, Class clazz):在指定索引上执行查询。
4.批量操作
bulkIndex(List queries):执行批量索引操作。
bulkDelete(List queries):执行批量删除操作。
5.搜索和聚合
search(String query, String indexName, Class clazz):在指定索引上执行搜索查询。
searchAggregations(String query, String indexName, Class clazz):执行聚合查询。
6.更新文档
update(String indexName, String documentId, String scriptSource):使用脚本更新文档。
7.索引别名管理
createAlias(String aliasName, String indexName):创建索引别名。
deleteAlias(String aliasName):删除索引别名。
8.索引刷新和优化
refreshIndex(String indexName):刷新索引,使最近的更改对搜索可见。
optimizeIndex(String indexName):优化索引,合并分片中的段。
9.健康检查和状态查询
clusterHealth():获取集群健康状态。
indexStatus(String indexName):获取索引状态。

第二种是文档类对应的操作类型 例如 本文中 文档类是 SearchDataDoc 对应的仓库类为 SearchDataDocRepository

@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class SearchDataServiceTest {@Autowiredprivate ElasticsearchOperations operations;@Autowiredprivate SearchDataDocRepository searchDataDocRepository;@Testpublic void insert() {SearchDataDoc searchDataDoc = new SearchDataDoc();searchDataDoc.setId(1L);searchDataDoc.setName("test");searchDataDoc.setCreatedTime(new Date());searchDataDoc.setModifiedTime(new Date());searchDataDocRepository.save(searchDataDoc);}@Testpublic void update() {Optional<SearchDataDoc> opt = searchDataDocRepository.findById(1L);if (opt.isPresent()) {SearchDataDoc searchDataDoc = opt.get();searchDataDoc.setName("测试 的商品");SearchDataDoc save = searchDataDocRepository.save(searchDataDoc);System.out.println(save.getName());}}@Testpublic void delete() {searchDataDocRepository.deleteById(1L);}@Testpublic void operateIndex() {// 删除索引boolean delete = operations.indexOps(SearchDataDoc.class).delete();// 创建索引boolean create = operations.indexOps(SearchDataDoc.class).create();// 刷新operations.indexOps(SearchDataDoc.class).refresh();// 判断 索引是否存在 boolean exists = operations.indexOps(SearchDataDoc.class).exists();}@Testpublic void find() {// 条件查询CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("name").in("test"));SearchHits<SearchDataDoc> search = operations.search(criteriaQuery, SearchDataDoc.class);}
}

运行测试类 完成验证


good day!!!

http://www.15wanjia.com/news/9090.html

相关文章:

  • 怎么介绍自己做的电影网站免费的网络推广渠道有哪些
  • 东莞建网站希爱力
  • 网站条形码如何做企业文化ppt
  • 广州旅游网站建设设计公司网络营销的方法
  • 手机游戏开服表时间表百度seo优化收费标准
  • 教做美食的网站百度推广的价格表
  • 苏州比较大的网站公司外贸建站平台
  • 淮安建设网站制作安仁网络推广
  • 做淘客网站用备案搜索关键词排名查询
  • 做网站的优势有哪些整合营销传播方案案例
  • wordpress文件下载插件win优化大师怎么样
  • 演出票务网站建设自动seo网站源码
  • 郑州的网站建设公司哪家好搜索引擎营销成功案例
  • 网站优化两大核心要素是什么有效的网站推广方式
  • 注册城乡规划师成绩查询网站关键词优化怎么做的
  • 企业型网站大数据培训包就业靠谱吗
  • 请人做网站注意事项百度爱采购优化
  • 电子商务网站建设教案公司广告推广方案
  • 上文明网站 做文明网民征文手游推广个人合作平台
  • 如何用css做网站站长之家域名查询排行
  • 做网站是买服务器还是买主机百度最怕哪个投诉电话
  • 链接网站怎么做郑州做网站的专业公司
  • 徐州人才网官方网站免费建设个人网站
  • 域名怎么绑定自己网站宁波怎么优化seo关键词
  • 深圳专业做网站的公司哪家好搜索引擎优化seo培训
  • 石家庄网站建设时光武汉seo网站优化排名
  • 网站如何做会员登录页面网站优化包括对什么优化
  • 网站怎么做吸引人百度搜索风云榜小说总榜
  • 福州市交通建设集团网站如何优化关键词提升相关度
  • 网站内容设计遵循的原则有怎么seo网站关键词优化