项目中使用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方法,用来添加其他请求:

项目中使用Elasticsearch的API相关介绍-LMLPHP

可以看到,能添加的请求包括:

  • 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);
05-16 13:03