ES API
ver: 6.8.0
ES创建索引
CreateIndexRequest createIndexRequest = new CreateIndexRequest(EsConstant.ES_INDEX);
//建立创建es语句
ElasticSearchClient.getInstance().indices().create(createIndexRequest, RequestOptions.DEFAULT);
//创建索引
es创建索引的方式有很多种,并且为你的每个字段设置类型
es 中keyword类型对应得数据在存es不会被分词,但是text在存入es之前会被分词,此时分词模式可以进行设置
ES 更新
UpdateRequest updateRequest = new UpdateRequest(EsConstant.ES_INDEX, "doc", Id);
//参数:索引名、文档类型doc(es7.0以上,es官方已经设置好默认为doc了,id为更新得某条文档得id)
updateRequest.doc(s, XContentType.JSON);
//s:更新文档内容,设置更新内容格式,也可以忽略设置
ElasticSearchClient.getInstance().update(updateRequest, RequestOptions.DEFAULT);
//ElasticSearchClient 为公司封装得es得客户端,通过update方法进行更新,如果没有对客户端连接进行封装,可通过客户端连接语句建立连接后,通过建立连接后得实例进行调用update方法进行更新
类比:jdbc连接 ,思路是一样得
ES 插入
IndexRequest indexRequest = new IndexRequest(EsConstant.ES_INDEX, "doc");
//参数:索引名、文档类型
indexRequest.source(s, XContentType.JSON);
//建立数据builder 提供es插入 参数s为es要插入得内容,s得类型可以有很多,不一定非是str类型
ElasticSearchClient.getInstance().index(indexRequest, RequestOptions.DEFAULT);
//es插入, 通过index方法插入数据
es设置路由,es设置路由得好处就是可以将通过路由,将数据统一化管理,存放在固定的分片上, 存放规则是 hash(esID)/分片数 的余数就是存放在第几个分片上,
举例:分片数为3,表示当前有3个分片, hash(esID)=5 那么 5/3 余2 那么当前数据存放在第二个分片上
indexRequest.routing(esID);
//设置es ID esId可以是默认得ID 如果不去人为定义,es会自动生成id,根据自己得业务去选用,看是否需要人为定义id
indexRequest.id();
ES 查询
//建立查询 参数为索引名 SearchRequest searchRequest = new SearchRequest(EsConstant.ES_INDEX); //建立查询条件 查询条件和查询方式有很多,ES支持精确查找,模糊查询,范围查询等各种查询 SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); //这是我需要建立得范围查询 RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(EsConstant.UPDATE_TIME).lt(DateUtil.getDate()); sourceBuilder.query(rangeQueryBuilder); searchRequest.source(sourceBuilder); SearchResponse res = ElasticSearchClient.getInstance().search(searchRequest, RequestOptions.DEFAULT); long totalHits = res.getHits().getTotalHits();
备注:Es不同得版本,调用得API都是不一样得,建议选清楚自己得版本再去使用,