spring boot整合elasticsearch实现查询功能
在Spring Boot中整合Elasticsearch实现查询功能,你可以使用Spring Data Elasticsearch。以下是一个简单的例子:
- 添加依赖到你的
pom.xml
:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<!-- 其他依赖 -->
</dependencies>
- 配置Elasticsearch属性,在
application.properties
或application.yml
中:
spring.data.elasticsearch.cluster-name=your-cluster-name
spring.data.elasticsearch.cluster-nodes=localhost:9300
- 创建一个Elasticsearch实体:
@Document(indexName = "your_index_name")
public class YourEntity {
@Id
private String id;
// 其他属性
}
- 创建一个Elasticsearch仓库接口:
public interface YourEntityRepository extends ElasticsearchRepository<YourEntity, String> {
// 自定义查询方法
}
- 使用仓库进行查询:
@Service
public class YourService {
@Autowired
private YourEntityRepository repository;
public List<YourEntity> search(String query) {
// 使用Elasticsearch查询构建器
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.must(QueryBuilders.matchQuery("fieldName", query));
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(boolQueryBuilder)
.build();
return repository.search(searchQuery).getContent();
}
}
- 在你的控制器中使用服务进行查询:
@RestController
public class YourController {
@Autowired
private YourService yourService;
@GetMapping("/search")
public List<YourEntity> search(@RequestParam String query) {
return yourService.search(query);
}
}
确保你的Elasticsearch集群正在运行,并且你的实体类映射正确。这样就可以通过YourController
提供的/search
端点进行搜索了。
评论已关闭