java连接Elasticsearch

1 配置文件

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

2 添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

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<DemoModel, String> {
    @Override
    List<DemoModel> findAll(); //es有很多自动处理的方法,直接用就可以了
}

5 查询ES数据

@Service
public class demoBiz {
    @Autowired
    AitestReplayRepository replayRepository;

    public PageInfo<QueryResponse> queryList(Integer pageNum, Integer pageSize) {
        Page<DemoModel> 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<AitestRecordCase> search = replayRepository.search(searchQuery);
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容