大连市城乡建设局网站,网站免费网站入口,北京建设工程交易信息网官网,网站上线详细步骤Spring Data访问Elasticsearch----Elasticsearch存储库Repositories 一、自动创建具有相应映射的索引二、存储库方法的注解2.1 Highlight2.2 SourceFilters 三、基于注解的配置四、Spring命名空间Namespace 本文包括Elasticsearch存储库实现的细节。 例1#xff1a;示例Book实… Spring Data访问Elasticsearch----Elasticsearch存储库Repositories 一、自动创建具有相应映射的索引二、存储库方法的注解2.1 Highlight2.2 SourceFilters 三、基于注解的配置四、Spring命名空间Namespace 本文包括Elasticsearch存储库实现的细节。 例1示例Book实体 Document(indexNamebooks)
class Book {Idprivate String id;Field(type FieldType.text)private String name;Field(type FieldType.text)private String summary;Field(type FieldType.Integer)private Integer price;// getter/setter ...
}一、自动创建具有相应映射的索引
Document注解有一个参数createIndex。如果这个参数被设置为true——这是默认值——Spring Data Elasticsearch将在应用启动时启动存储库支持时检查Document注解定义的索引是否存在。如果它不存在将创建索引并且从实体的注解派生的映射(参见Elasticsearch对象映射)将被写入新创建的索引。可以使用Setting注解设置将要创建的索引的详细信息更多信息请参见索引设置。
二、存储库方法的注解
2.1 Highlight
存储库方法上的Highlight注解定义了应该包含哪些返回的实体高亮字段。要在Book name或summary中搜索某些文本并突出显示找到的数据可以使用以下存储库方法:
interface BookRepository extends RepositoryBook, String {Highlight(fields {HighlightField(name name),HighlightField(name summary)})SearchHitsBook findByNameOrSummary(String text, String summary);
}可以像上面那样定义多个要高亮显示的字段Highlight和HighlightField注解都可以用HighlightParameters注解进一步定制。检查Javadocs以获取可能的配置选项。在搜索结果中可以从SearchHit类检索highlight数据。
2.2 SourceFilters
有时用户不需要从搜索中返回实体的所有属性而只需要返回一个子集。Elasticsearch提供源过滤以减少通过网络传输到应用程序的数据量。 当使用Query实现和ElasticsearchOperations时通过在查询上设置源过滤器这很容易实现。 当使用存储库方法时有SourceFilters注解
interface BookRepository extends RepositoryBook, String {SourceFilters(includes name)SearchHitsBook findByName(String text);
}在本例中除了name之外返回的Book对象的所有属性都为空。
三、基于注解的配置
Spring Data Elasticsearch存储库支持可以通过JavaConfig使用注解来激活。 例2使用JavaConfig的Spring Data Elasticsearch存储库
Configuration
EnableElasticsearchRepositories( --------1 basePackages org.springframework.data.elasticsearch.repositories)
static class Config {Beanpublic ElasticsearchOperations elasticsearchTemplate() { --------2 // ...}
}class ProductService {private ProductRepository repository; --------3 public ProductService(ProductRepository repository) {this.repository repository;}public PageProduct findAvailableBookByName(String name, Pageable pageable) {return repository.findByAvailableTrueAndNameStartingWith(name, pageable);}
}1. EnableElasticsearchRepositories注解激活Repository支持。如果没有配置基础包它将使用它所在的配置类之一。
2. 通过使用[Elasticsearch Operations](https://blog.csdn.net/gabriel_wang_sh/article/details/136813482)中所示的配置之一提供一个名为elasticsearchTemplate的类型为ElasticsearchOperations的Bean。
3. 让Spring将Repository bean注入到类中。四、Spring命名空间Namespace
Spring Data Elasticsearch模块包含一个自定义命名空间允许定义存储库bean以及用于实例化ElasticsearchServer的元素。 使用repositories元素查找Spring Data存储库如创建存储库实例中所述。 例3使用命名空间设置Elasticsearch存储库
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:elasticsearchhttp://www.springframework.org/schema/data/elasticsearchxsi:schemaLocationhttp://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/data/elasticsearchhttps://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch-1.0.xsdelasticsearch:repositories base-packagecom.acme.repositories //beans使用Transport Client或Rest Client元素在上下文中注册一个Elasticsearch Server实例。 例4使用命名空间的Transport Client
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:elasticsearchhttp://www.springframework.org/schema/data/elasticsearchxsi:schemaLocationhttp://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/data/elasticsearchhttps://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch-1.0.xsdelasticsearch:transport-client idclient cluster-nodeslocalhost:9300,someip:9300 //beans例5使用命名空间的Rest Client
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:elasticsearchhttp://www.springframework.org/schema/data/elasticsearchxsi:schemaLocationhttp://www.springframework.org/schema/data/elasticsearchhttps://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch.xsdhttp://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsdelasticsearch:rest-client idrestClient hostshttp://localhost:9200/beans