好的,下面是一个使用Java语言、整合spring boot和Spring Data Elasticsearch来提供全文搜索ES数据库功能的接口示例:
首先需要在pom.xml文件中添加相关依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
然后创建一个ElasticsearchRepository:
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
public interface BookRepository extends ElasticsearchRepository<Book, String> {
List<Book> findByTitle(String title);
}
其中,Book是一个实体类,存储图书信息,具体定义如下:
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
@Document(indexName = "book", shards = 2, replicas = 1)
public class Book {
@Id
private String id;
@Field(type = FieldType.Keyword)
private String title;
@Field(type = FieldType.Text)
private String content;
// 省略getter和setter方法
}
在上述代码中,@Document用于指定索引名称、分片数量和副本数;@Field用于指定字段类型和映射规则。
接着,在Controller层编写搜索接口:
@RestController
@RequestMapping("/api/books")
public class BookController {
@Autowired
private BookRepository bookRepository;
@GetMapping("/search")
public List<Book> search(@RequestParam("q") String query) {
return bookRepository.findByTitle(query);
}
}
其中,@GetMapping用于指定请求路径,@RequestParam用于获取查询参数,bookRepository是通过@Autowired注入的ElasticsearchRepository。
最后,在application.properties文件中添加以下配置:
spring.data.elasticsearch.cluster-name=my-elasticsearch-cluster
spring.data.elasticsearch.cluster-nodes=192.168.1.100:9300,192.168.1.101:9300
其中,cluster-name和cluster-nodes分别指定了ES集群的名称和节点地址。
至此,一个支持全文搜索ES数据库功能的接口就完成了。开发者只需要启动Spring Boot应用程序,访问/search接口,并传递查询参数即可实现全文搜索。