项目中使用Elasticsearch的API相关介绍
0、域映射类型
text:会分词,不支持聚合
对当前搜索关键词,先自身分词,分成多个词,然后去一个一个的词去利用倒排索引去查询es索引库
一般应用在搜索关键字匹配的字段的类型。 商品的title,name。
keyword:不会分词,将全部内容作为一个词条,支持聚合
对当前关键字不进行分词,输入的是“华为手机”,就只查包含有华为手机的词
一般应用在搜索商品的属性的时候,可以用keyword作为类型。
1、bulk操作
示例:
restHighLevelClient.bulk(bulKRequest, RequestOptions.DEFAULT);
bulk表示批处理,进行批量新增,批量修改,批量删除等操作的API
bulk方法中有两个参数
- 参数1表示批处理请求,-------查看2
- 参数2表示默认请求选项,直接默认即可
2、BulkRequest类
示例:
BulkRequest bulKRequest=new BulkRequest("app_info_article");
IndexRequest indexRequest=new IndexRequest().id(xxx).source(JSON.toJSONString(xx), XContentType.JSON);
bulKRequest.add(indexRequest);
BulkRequest表示批处理请求类,其本质就是将多个普通的CRUD请求组合在一起发送。
其中提供了一个add方法,用来添加其他请求:
可以看到,能添加的请求包括:
- IndexRequest,也就是新增
- UpdateRequest,也就是修改
- DeleteRequest,也就是删除
3、search操作
示例:
highLevelClient.search(searchRequest, RequestOptions.DEFAULT);
表示从es中搜索查询的api方法
其中有两个参数:
- 参数1表示搜索请求对象,------查看4
- 参数2表示默认请求选项,直接默认即可
4、SearchReuqest对象类
示例:
SearchRequest searchRequest=new SearchRequest("app_info_article");
该对象表示用于与搜索文档、聚合、定制查询有关的任何操作,还提供了在查询结果的基于上,对于匹配的关键词进行突出显示的方法。
参数表示指定索引库名称
该参数是一个不定长的参数,表示可以操作多个索引库。
SearchRequest提供了source方法,用来进行聚合查询条件
searchRequest.source(searchsourceBuilder);
5、SearchSourceBuilder对象类
示例:
SearchSourceBuilder searchsourceBuilder=new SearchSourceBuilder();
SearchSourceBuilder表示搜索内容参数设置对象,此类用来设置查询条件
该类下包含很多方法其中包含:
- query 查询方法
searchSourceBuilder.query(boolQueryBuilder);
- highlighter 高亮方法
HighlightBuilder highlightBuilder=new HighlightBuilder();
highlightBuilder.field("title");
highlightBuilder.preTags("<font style='color: red; font-size: inherit;'>");
highlightBuilder.postTags("</font>");
searchSourceBuilder.highlighter(highlightBuilder);
- sort 排序方法
searchSourceBuilder.sort("publishTime", SortOrder.DESC);
- from和size 分页方法
searchSourceBuilder.from(0);
searchSourceBuilder.size(dto.getPageSize());
6、BoolQueryBuilder对象类
示例:
BoolQueryBuilder query=QueryBuilders.boolQuery();
QueryStringQueryBuilder queryBuilder = QueryBuilders.queryStringQuery(dto.getSearchWords())
.field("title")
.field("content")
.defaultOperator(Operator.OR);
query.must(queryBuilder);
表示创建布尔查询构建类。
布尔查询是一个或多个查询子句的组合,每一个子句就是一个子查询。子查询的组合方式有:
- must:必须匹配每个子查询,类似“与”
- should:选择性匹配子查询,类似“或”
- must_not:必须不匹配,不参与算分,类似“非”
- filter:必须匹配,不参与算分
7、queryStringQuery操作
示例:
QueryStringQueryBuilder queryBuilder = QueryBuilders.queryStringQuery(dto.getSearchWords())
.field("title")
.field("content")
.defaultOperator(Operator.OR);