项目使用SpringBoot+Gradle,使用ElasticSearch进行crud的方式是引入SpringBoot JPA。
一、引入依赖
implementation 'org.springframework.boot:spring-boot-starter-data-jpa:2.7.8' implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch:2.7.8'
二、配置application.yml
spring:
elasticsearch:
username: elastic
password: elastic
uris: locahost:9200
三、编写配置文件
@Configuration
@RequiredArgsConstructor
public class ElasticsearchConfig extends AbstractElasticsearchConfiguration {
private final ElasticsearchProperties elasticsearchProperties;
@Override
@Bean
public RestHighLevelClient elasticsearchClient() {
final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
.connectedTo(elasticsearchProperties.getUris().get(0))
.withBasicAuth(elasticsearchProperties.getUsername(),elasticsearchProperties.getPassword())
.build();
return RestClients.create(clientConfiguration).rest();
}
}
四、业务代码
实体类中使用@Document注解配置Elasticsearch索引名称
@Data
@Document(indexName = "test")
public class EsEntity {
private Integer id;
@JsonProperty("create_time")
@JSONField(name = "create_time")
private String createTime;
private String updateTime;
}
创建Repository接口,以供业务模块使用。类似Mybatis的mapper,支持CURD
public interface TestRepository extends ElasticsearchRepository<EsEntity, String> {
}
业务代码中注入Repository之后可直接进行CURD
@Service
@RequiredArgsConstructor
public class TestServiceImpl implements TestService {
private final TestRepository testRepository;
@Override
public void save(EsEntity esEntity) {
testRepository.save(esEntity);
}
@Override
public void delete(String id) {
testRepository.deleteById(id);
}
}
五、简单操作ES
-
查询全部索引
http://locahost:9200/_cat/indices?v&pretty
-
查看指定索引数据
http://locahost:9200/index/_search
-
删除个别索引
curl -u username:password -XDELETE 'http://localhost:9200/index'
#返回结果:
{“acknowledged”: true}
#删除成功