美文网首页
java连接Elasticsearch

java连接Elasticsearch

作者: 熊本猫 | 来源:发表于2021-05-19 11:40 被阅读0次

    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);
    }
    

    相关文章

      网友评论

          本文标题:java连接Elasticsearch

          本文链接:https://www.haomeiwen.com/subject/mgcpjltx.html