为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 网络编程 > 其它综合 正文

ES-Java和URI类型的式search api详述

三叶资源网 2022-12-26 20:18:50 其它综合 127 ℃ 0 评论

本节开始,将详细介绍Search API的使用。

Search API概述

详细API如下:

  • public final SearchResponse search(SearchRequest searchRequest, RequestOptions options) throws IOException
  • public final void searchAsync(SearchRequest searchRequest, RequestOptions options, ActionListener listener)SearchRequest类图:

其关键属性说明如下:

  • private SearchType searchType = SearchType.DEFAULT:搜索类型
  1. QUERY_THEN_FETCH
    首先根据路由算法向相关分片发送请求,此时只返回documentId与一些必要信息(例如用于排序等),然 后对各个分片的结果进行汇聚、排序。然后选取客户端需要获取的数据条数(top n)。最后根据documentId再向各个分片请求具体的文档信息。
  2. QUERY_AND_FETCH在5.4.x版本开始废弃,直接向各个分片节点请求数据,每个分片返回客户端请求数量的文档信息,然后汇聚并全部返回给客户端,返回的数据为客户端请求数量size * (路由后的分片数量)。
  3. DFS_QUERY_THEN_FETCH在开始向各个节点发送请求之前会先进行一次词频与相关性的计算,后续处理流程与QUERY_THEN_FETCH相同,可以看出该查询类型的文档相关性会更高,但性能比QUERY_THEN_FETCH要差。
  • private String[] indices:待查询的索引库。
  • private String routing:路由字段值。
  • private String preference:复制组内倾向性。
  • private SearchSourceBuilder source:查询主体(rerquest body),后续会重点讲解。
  • private Boolean requestCache:是否开启查询缓存。
  • private Boolean allowPartialSearchResults:是否允许部分成功。
  • private Scroll scroll:滚动API(用于分页)
  • private int batchedReduceSize = DEFAULT_BATCHED_REDUCE_SIZE:批量归并size:默认为512
  • private int maxConcurrentShardRequests = 0:建议最大值别超过256,其核心含义待研究。
  • private int preFilterShardSize = 128,其核心作用待研究。
  • private String[] types:待查询的类型。

接下来再来重点关注一下查询API几个通用的参数:

  • timeout查询的超时时间。
  • from查询开始的偏移量,分页参数,类似于关系数据库的分页的start。默认值为0。
  • size批量获取条数,用于分页查询。
  • search_type查询类型,6.4.0只支持QUERY_THEN_FETCH与DFS_QUERY_THEN_FETCH。
  • request_cache查询缓存,如果设置为false,取决于index级别的设置,将在索引管理API时详细讲解。
  • search_results是否允许部分成功,例如一个查询请求需要向3个分片发出请求,如果只有两个分片成功返回结果而另外一个出现故障。如果设置为false则会返回整体失败,如果设置为true则会成功部分结果,默认为true。
  • terminate after一个查询为每个分片最多收集的文档数,当达到该数量是,查询会提前结束。
  • batched_reduce_size在协调节点上应该立即减少一次请求需要访问的分片数量,如果一次请请求需要汇聚太多节点上的数据容易造成内存消耗,该值可作为一个保护机制,控制一个请求同一时间并发访问的最大分片数量,默认为512。

注意:search_type,request_cache和allow_partial_search_results这三个参数,必须查询url级别的参数(query string parameters),如果使用Rest low Level API时需要特别留意。

URI Search

Elasticsearch支持使用URI请求模式来使用Search API,并不支持查询请求体中所有参数,该模式主要用途是用于测试,诸如使用CURL查询命令等。

URI Search示例如下:

1GET twitter/_search?q=user:kimchy

URI Search支持如下参数:

  • q定义查询字符串,其语法映射为DSL查询语法之query_string。
  • df查询字符串未使用字段前缀时定义的默认字段。
  • analyzer针对查询字符串使用的分词器。
  • analyze_wildcard是否分析通配符合前缀查询,默认值为false。
  • batched_reduce_size 控制协调节点批量发送分片的最大个数,主要是控制协调节点内存的消耗而提供的一种保护机制。
  • default_oprator默认操作类型,可选值为and、or,默认值为or。
  • lenient是否支持类型转换异常,默认为fasle,如果将一个字符类型传递给一个数字类型会抛出异常。如果设置true则忽略该异常。
  • explain类似于执行计划,表示对于每一个命中,包含如果得分是如何算出来的,默认为false。
  • _source用于对_source字段进行过滤,可以设置false来禁止返回_souce字段。该参数支持通配符表达式,例如obj.*,用于字段过滤。
  • stored_fields用于字段过滤,已在字段过滤部分详细介绍过。
  • sort排序,可以类似于关系型数据库的排序语法:fieldName:asc | desc,也可以使用特殊字段_score(表示按分数,默认值)。
  • track_scores当使用排序时,跟踪返回结果中分数计算过程。
  • track_total_hits默认值为true,表示在返回结果中返回满足该查询条件的所有记录数。
  • timeout查询超时时间,默认永不超时。
  • terminate_after是否开启提前结束查询,主要是控制一次查询,从一个分片中返回的最大文档数量,如果开启,返回结果中会包含一个响应参数terminated_early,指示是否提前结束。
  • from用于分页,起始记录数。
  • size用于分页,控制一次查询,从每个分片查询的记录条数。
  • search_type查询类型,已在文章开头处介绍。
  • allow_partial_search_results是否允许部分分片执行失败,默认为true,也可以集群配置参数:search.default_allow_partial_results来设置默认值。

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
多页面浏览器保护壳模仿打字效果迅雷Aplayer引擎创建access数据库NTP服务器115网盘扫码登录字库验证码识别adb模块源码COMHOOK类模块源码文本颜色CHM帮助文档RapidJSON腾讯关键词检测内存运行模块准星拖动易语言限制未授权U盘斗鱼房间热度fiddler
最新评论