网站 流程,千图网解析网站怎么做,上海免费注册公司官网,信息服务平台官网文章目录 初始化RestHighLeveClient#xff08;必要条件#xff09;索引库操作1.创建索引库#xff08;4步#xff09;2.删除索引库#xff08;3步#xff09;3.判断索引库是否存在#xff08;3步#xff09;4.总结#xff1a;四步走 文档操作1.创建文档#xff08;4… 文章目录 初始化RestHighLeveClient必要条件索引库操作1.创建索引库4步2.删除索引库3步3.判断索引库是否存在3步4.总结四步走 文档操作1.创建文档4步2.删除文档3步3.查看文档4步4.增量修改文档(局部更新)4步5.批量创建文档4步6.总结五步走 Elasticsearch查询语法1.全文检索5步match_allmatchmulti_match 2.精确查找termrange 3.复合查询Bool Query5步function score广告置顶 排序sort分页from/size高亮highlight总结 初始化RestHighLeveClient必要条件
!--Maven配置--
!--引入es的RestHignLeveClient依赖--
dependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-high-level-client/artifactId
/dependency
!--因为SpringBoot默认的ES版本是7.6.2所以我们需要覆盖默认的ES版本:--
propertiesjava.version1.8/iava.versionelasticsearch,version7.12.1/elasticsearch.version
/properties//1.初始化RestHighLeveClient
RestHighLeveClient client new RestHighLeveClient(RestClient.builder(//写自己的ES地址HttpHost.create(localhost:9200);
))索引库操作
1.创建索引库4步
//2.相当于 PUT /索引名
CreateIndexRequest request new CreateIndexRequest(索引库名);
//3.相当于请求体JSON风格
request.source(请求体,XContentType.JSON);
//4.发起请求.indices()包含索引库操作的的所有方法
client.indices().create(request,RequestOptions.DEFAULT);2.删除索引库3步
// 2.相当于 DELETE /索引库名
DeleteIndexRequest request new DeleteIndexRequest(索引库名);//3.发起请求
client.indices().create(request,RequestOptions.DEFAULT);3.判断索引库是否存在3步
// 2.相当于 GET /索引库名
GetIndexRequest request new GetIndexRequest(索引库名称);// 3.发起请求
boolean exists client.indices.exists(request,RequestOptions.DEFAULT);//输出查看是否存在是为true,不是为false
System.out.println(exists);4.总结四步走 从这里可以看出创建索引有四步其余只有三步
文档操作
1.创建文档4步
// 2.相当于POST /索引库名/_doc/文档id
IndexRequest request new IndexRequest(索引库名).id(文档id);
// 3.准备json文档也就是文档的内容请求体
request.source(请求体,XContentType.JSON);
// 4.发送请求
client.index(request,RequestOptions.DEFAULT);/**注意
*如果是请求体是实体对象请序列化成JSON.toJSONString(请求体)
*文档id在ES默认是keyword在java中也就是String类型,需要toString()转成字符串
*/2.删除文档3步
// 2.相当于 DELETE /索引库名/_doc/文档id
DeleteRequest request new DeleteRequest(索引库名,文档id);
// 3.发送请求
client.delete(request,RequestOptions.DEFAULT);3.查看文档4步
// 2.相当于 GET /索引库名/_doc/文档id
GetRequest request new GetRequest(索引库名,文档id);
// 3.发送请求
GetResponse response client.get(request,RequestOptions.DEFAULT)
// 4.解析结果
String json response.getSourceAsString();
System.out.println(json)4.增量修改文档(局部更新)4步
// 2.相当于 POST /索引库名/ _update/文档id
UpdateRequest request new UpdateRequest(indexName,文档id);// 3.准备参数
request.doc(age:18,name:Rose
)
// 4.更新文档
client.update(request,RequestOptions.DEFAULT)5.批量创建文档4步
// 2.创建Bulk请求
BulkRequest request new BulkRequest();
// 3.准备参数添加多个IndexRequest(),以实体类为例
for(Student student:students){Student student new Student();request.add(new IndexRequest(索引库名).id(student.getId()).source(JSON.toJSONString(student),XContentType.JSON);)
}
// 4.发送请求
client.bulk(request,RequestOptions.DEFAULT)6.总结五步走 Elasticsearch查询语法
1.全文检索5步
match_all
// match_all
// 2.准备request
SearchRequest request new SearchRequest(索引库名);
// 3.组织DSL参数
request.source.query(QueryBuilders.matchAll());
// 4.发送请求得到结果
SearchResponse response client.search(request,RequestOptions.DEFAULT);// 5.解析响应结果
SearchHits searchHits response.getHits();
// 5.1获取总条数
long total searchHits.getTotalHits().value;
// 5.2获取文档数组并且遍历
SearHits[] hits searchHits.getHits();
for(SearchHits hit : hits){//获取文档数据源String json hit.getSourceAaString();//反序列化HoteDoc hotelDoc JSON.parseObject(json,HoteDoc.class);
}System.out.println(response);match
//在match_all第5行修改
QueryBuilders.matchQuery(要查询的字段,查询的内容);multi_match
//在match_all第5行修改
QueryBuilders.multiMatchQuery(要查询的内容,被查询的字段,被查询的字段);2.精确查找
term
//在match_all第5行修改
QueryBuilders.termQuery(查询字段,被查询的内容)range
//在match_all第5行修改
QueryBuilders.rangeQuery(被查询字段).get(100).lte(150)3.复合查询
Bool Query5步
// 2.准备request
SearchRequest request new SearchRequest(索引库名);
// 3.复合条件
BoolQueryBuilder boolQuery QueryBuilders.boolQuery();
boolQuery.must();
boolQuery.filter();
// 3.1组织DSL参数
request.source.query(boolQuery);
// 4.发送请求得到结果
SearchResponse response client.search(request,RequestOptions.DEFAULT);// 5.解析结果
function score广告置顶
// 2.准备request
SearchRequest request new SearchRequest(索引库名);// 3.复合条件
FunctionScoreQueryBuilder functionScoreQuery QueryBuilders.functionScoreQuery(//原始查询QueryBuilders.matchAll();//functionnew FunctionScoreQueryBuilder.FilterFunctionBuilder(//过滤条件QueryBuilders.termQuery(查询字段,被查询的内容)//算分函数ScoreFunctionBuilders.weightFactorFunction(10)))
// 3.1组织DSL参数
request.source.query(functionScoreQuery);// 4.发送请求得到结果
SearchResponse response client.search(request,RequestOptions.DEFAULT);排序sort
// 普通字段排序
request.source.sort(要排序的字段,排序方式);// 地理坐标距离排序
request.source.sort(SortBuilders.geoDistanceSort(geo_point类型字段,new GeoPoint(经度,纬度)).order(SortOrder.ASC).unit(DistanceUnit.KILOMETERS)
)分页from/size
request.source.from(0).size(5);高亮highlight
// 2.准备request
SearchRequest request new SearchRequest(索引库名);
// 3.准备DSL查询出来的字段
request.source.query(QueryBuilders.matchQuery(要查询的字段,查询的内容))
// 3.1对查询出来的字段高亮显示
request.source.highlighter(new HighlightBuilder().field(要高亮的字段).requireFieldMatch(false)//是否需要与查询字段匹配
)
// 4.发送请求
SearchResponse response client.search(request,RequestOptions.DEFAULT);//高亮结果的处理
// 5.解析响应结果
SearchHits searchHits response.getHits();
// 5.1获取总条数
long total searchHits.getTotalHits().value;
// 5.2获取文档数组并且遍历
SearHits[] hits searchHits.getHits();
for(SearchHits hit : hits){//获取文档数据源String json hit.getSourceAaString();//反序列化HoteDoc hotelDoc JSON.parseObject(json,HoteDoc.class);//获取高亮结果MapString,HighlightField highlightFields hit.getHighlightFields();if(!CollectionUtils.isEmpty(highlightFields)){//根据字段获取高亮结果HighlightFields highlightField highlightFields.get(name);if(highlightField ! null){highlightField.getFragments()[0].string();hotelDoc.setName(name);}}
}总结