java连接Elasticsearch

1 配置文件

spring:
  data:
    elasticsearch:
      cluster-nodes: 10.0.0.1:9300, 10.0.0.2:9300 //es机器ip和端口
      cluster-name: cluster //集群名称

2 添加依赖


    org.springframework.boot
    spring-boot-starter-data-elasticsearch

3 创建Elasticsearch数据model

@Document(indexName = "es-index", type = "es-type")  //index是文档(Document)的容器,是一类文档的集合,type可以理解成关系数据库中Table
public class DemoModel{
    private String id;

    @JsonProperty("app_name") //加这个转换es的字段为java字段
    private String appName;

    @JsonProperty("environment") //加这个转换es的字段为java字段
    private String env;
}

4 创建Repository接口

import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;
import java.util.List;

@Repository
public interface ESDemoRepository extends ElasticsearchRepository {
    @Override
    List findAll(); //es有很多自动处理的方法,直接用就可以了
}

5 查询ES数据

@Service
public class demoBiz {
    @Autowired
    AitestReplayRepository replayRepository;

    public PageInfo queryList(Integer pageNum, Integer pageSize) {
        Page demoModel= replayRepository.findAll(PageRequest.of(pageNum - 1 , pageSize)); //es的page从第0页开始,如果页码大于存在页数会报错"unknown instance "
        //do something
    }
}

6 高级查询

public class demoBiz {
//查询_id在一个列表中,类似于sql的IN
BoolQueryBuilder bqb = QueryBuilders.boolQuery()
                .must(QueryBuilders.termsQuery("_id",caseIds));

//把查询条件添加到SearchQuery中,可以添加多个条件
        SearchQuery searchQuery = new NativeSearchQueryBuilder()
                .withQuery(bqb)
                .withPageable(PageRequest.of(pageNum -1, pageSize))
                .build();;

//执行查询并获得结果
Page search = replayRepository.search(searchQuery);
}

你可能感兴趣的:(java连接Elasticsearch)