elasticsearch 使用说明
*******************************
配置类
RestClientProperties:自动配置类使用属性
@ConfigurationProperties(
prefix = "spring.elasticsearch.rest"
)
public class RestClientProperties {
private List<String> uris = new ArrayList(Collections.singletonList("http://localhost:9200"));
private String username;
private String password;
private Duration connectionTimeout = Duration.ofSeconds(1L);
private Duration readTimeout = Duration.ofSeconds(30L);
*******************************
相关注解
@Document:注解在类上,设置索引名称、主分片数、副本数
@Persistent
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface Document {
String indexName(); //索引名称
short shards() default 5; //主分片数
short replicas() default 1; //主分片对应的副本
String refreshInterval() default "1s";
String indexStoreType() default "fs";
boolean createIndex() default true;
String type() default "";
boolean useServerConfiguration() default false;
VersionType versionType() default VersionType.EXTERNAL;
}
@Setting:注解在类上,设置索引配置文件的路径,不常用
@Persistent
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface Setting {
String settingPath() default "";
}
@Mapping:注解在类、字段上,设置映射文件位置,不常用
@Persistent
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD})
public @interface Mapping {
String mappingPath() default "";
}
@Field:注解在字段上,设置字段类型、是否索引等信息
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
@Documented
@Inherited
public @interface Field {
@AliasFor("name")
String value() default "";
@AliasFor("value")
String name() default "";
FieldType type() default FieldType.Auto;
boolean index() default true;
boolean store() default false;
boolean fielddata() default false;
String searchAnalyzer() default "";
String analyzer() default "";
String normalizer() default "";
DateFormat format() default DateFormat.none;
String pattern() default "";
String[] ignoreFields() default {};
boolean includeInParent() default false;
String[] copyTo() default {};
}
**************************
FieldType:字段类型枚举类
public enum FieldType {
Text,
Byte,
Short,
Integer,
Long,
Date,
Half_Float,
Float,
Double,
Boolean,
Object,
Auto,
Nested,
Ip,
Attachment,
Keyword;
private FieldType() {
}
}
@MultiField:注解在字段上,对字段设置多个类型
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
@Documented
public @interface MultiField {
Field mainField();
InnerField[] otherFields() default {}; //内部字段可设置多个
}
@InnerField:字段多类型映射时,用来设置内部字段
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface InnerField {
FieldType type(); //字段类型
boolean index() default true;
boolean store() default false;
String searchAnalyzer() default "";
String analyzer() default "";
String normalizer() default "";
String suffix();
DateFormat format() default DateFormat.none;
String pattern() default "";
boolean fielddata() default false;
}
@GeoPointField:注解在字段上,表示位置节点
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
@Documented
public @interface GeoPointField {
}
*******************************
repository 操作
ElasticsearchRepository:自定义repository使用接口
@NoRepositoryBean
public interface ElasticsearchRepository<T, ID> extends ElasticsearchCrudRepository<T, ID> {
<S extends T> S index(S var1);
<S extends T> S indexWithoutRefresh(S var1);
Iterable<T> search(QueryBuilder var1);
Page<T> search(QueryBuilder var1, Pageable var2);
Page<T> search(SearchQuery var1);
Page<T> searchSimilar(T var1, String[] var2, Pageable var3);
void refresh();
Class<T> getEntityClass();
}
ElasticsearchCrudRepository:增删查改接口
@NoRepositoryBean
public interface ElasticsearchCrudRepository<T, ID> extends PagingAndSortingRepository<T, ID> {
}
PagingAndSortingRepository:分页排序接口
@NoRepositoryBean
public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> {
Iterable<T> findAll(Sort var1);
Page<T> findAll(Pageable var1);
}
C