背景:
SpringBoot 2.0.6RELEASE
ElasticSearch 6.X
如果你还没有安装Elasticsearch,希望这边文章能帮助到你
使用Docker Compose服务编排创建ELKhttps://blog.csdn.net/qq_35715202/article/details/123137911
废话不多说直接上代码
1、引入pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
2、属性配置
spring:
data:
elasticsearch:
cluster-name: docker-cluster #默认的是elasticsearch,注意了
cluster-nodes: 192.168.5.28:9300 #老哥,写你自己的
repositories:
enabled: true
3、创建实体
import lombok.Data;
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;
/**
* @Author xiewenlong
* @Date 2019/5/21
*/
@Data
@Document(indexName = TaskLog.INDEX_NAME, type = TaskLog.TYPE)
public class TaskLog {
public static final String INDEX_NAME = "log";
public static final String TYPE = "task";
@Id
private String id;
@Field(type = FieldType.Text, searchAnalyzer = "ik_smart", analyzer = "ik_smart")
private String type;
@Field(type = FieldType.Text, searchAnalyzer = "ik_smart", analyzer = "ik_smart")
private String name;
private String author;
private Integer order;
}
注意:@Id 使用实体保存后id会回显
4、创建操作仓库
package com.define.commons.admin.repository;
import com.define.commons.admin.domain.TaskLog;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Component;
/**
* 关键字 方法命名
* And findByNameAndPwd
* Or findByNameOrSex
* Is findById
* Between findByIdBetween
* Like findByNameLike
* NotLike findByNameNotLike
* OrderBy findByIdOrderByXDesc
* Not findByNameNot
*
* 自动生成实现类
*
* @Author xiewenlong
* @Date 2019/5/21
*/
@Component
public interface TaskLogESRepository extends ElasticsearchRepository<TaskLog, String> {
Page<TaskLog> findByTypeLike(String type, Pageable pageable);
}
注意:这里定义接口名称会自动生成实现类,接口命名规则改上面代码注释
5、高亮查询(失败了,先别急着开始cv大法)
public class ESTest {
private Consumer<Object> out = System.out::println;
@Autowired
private TaskLogESRepository taskLogESRepository;
@Test
public void highlight(){
out.accept("----------------------- highlight start -----------------------");
NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
//高亮
HighlightBuilder.Field highlightField = new HighlightBuilder.Field("name")
.preTags("<span style='color: red'>")
.postTags("</span>");