当前位置: 首页 > news >正文

阜阳手机网站制作海口网站建设发布

阜阳手机网站制作,海口网站建设发布,天津小型企业网站设计,专业拓客团队怎么收费题注:随着对ES接触的越来越深入,发现此前了解的ES知识点有点单薄,特此寻来ES知识点汇总成的一个思维导图,全面了解自己掌握了哪些,未掌握哪些。此外,作者斌并没有足够的精力学习ES全部的知识点,…

题注:随着对ES接触的越来越深入,发现此前了解的ES知识点有点单薄,特此寻来ES知识点汇总成的一个思维导图,全面了解自己掌握了哪些,未掌握哪些。此外,作者斌并没有足够的精力学习ES全部的知识点,只能见缝插针,在工作中遇到陌生的点再去深入了解。
本文则是针对Nested嵌套查询进行一系列的研究和分析

ES知识点汇总—思维导图,点击此链接查看

在这里插入图片描述

1. Nasted查询

起因是作者在工作中看到同事提交的这样一行代码

在这里插入图片描述
才发现自己并不清楚nested的作用,特此补充学习。

1.1 观察查询结果

首先我去看了一下这个索引中存储的数据内容,如下图所示。我们自然一眼看出,_source字段中的内容是存储的数据信息,那么就分析一下里面。
观察event字段,发现该字段是一个数组,数组里面嵌套着match[ ]数组,match数组里面嵌套着rule[ ]数组。这可就有意思了,用这种层层嵌套的设计来储存我们的数据。噢,原来这就是嵌套!

观察结果: executeScanTime字段、fileSimHash字段、detectorPort字段都是只有一层,只有event是嵌套的设计

在这里插入图片描述

1.2 调用查询

  • 查询无嵌套的字段

首先我们来看看,如何查询executeScanTime字段内容:使用term查询该字段内容
在这里插入图片描述
发现可以得到返回结果
在这里插入图片描述

  • 查询有嵌套的字段
    我们来查询一下event字段下的fileName字段:使用term查询
    在这里插入图片描述

惊讶的发现,居然失败了,hits[ ]是空的
在这里插入图片描述

那么就先草率的得出一个结论:普通的方式是无法直接查询嵌套的字段信息

1.3 查询嵌套字段

那有什么办法可以查询到嵌套的字段呢?经过作者本人多次摸索,终于找到一个办法,形如下图,就可以实现查询了,执行后会正确得到查询信息!
在这里插入图片描述

分析一下这个语法,简单的term查询是这样子的。那复合查询该如何写呢
在这里插入图片描述
不知大家是否可以发现出什么规律,这里留个伏笔,大家自己总结一下如何使用,动动脑袋,然后自己也实践一下。后续我会提供详细的总结

1.4 细节补充

我现在希望查询policyId字段,该如何写呢?
在这里插入图片描述
错误的写法
在这里插入图片描述

正确的写法
在这里插入图片描述
写到这里,在kibana 中嵌套查询的介绍就先到这里
休息一下吧!


接下来,我很好奇这种字段嵌套是如何设计出来的。我们都知道,首先得定义索引的映射关系,然后创建索引,再给索引赋值,最后才是数据的查询。

1.5 嵌套字段的映射

GET sdlp_unstructure_file_scan_result_115/_mapping

在这里插入图片描述
可以看到,在event字段和match字段,定义type= nested,就可以实现嵌套设计。不然的话,只能是一层的设计,无法实现层层嵌套的效果

1.6 对应的Java写法

作为开发,当然要知道如何代码实现ES查询,测试用例如下

// 此方式常用
@Test
void TermQuery(){// 获取client这里默认已经获取// 1. 准备request (参数为索引名称)SearchRequest request = new SearchRequest("indexName");// 2. 构建DSL语句request.source().query(QueryBuilders.nestedQuery("event.match",QueryBuilders.termQuery("event.match.policyId","47"), ScoreMode.None));// 3. 发送请求SearchResponse reponse = client.search(request, RequestOptions.ESFAULT);// 4. 解析数据,得到_source数据SearchHit[] hits = response.getHits().getHits();for (SearchHit hit : hits) {System.out.println(hit.getSourceAsString());}}

1.7 回顾

这时候再来看一下文章最开始我分享的同事提交的代码
在这里插入图片描述
这就很好理解了,should内部使用了term查询,且这个字段是嵌套字段。

1.8 总结

所有的东西,我们都了解了一遍,但是,作者仍感觉Nested的知识点独立于自己对ES的了解。因此查看思维导图,发现原来数据类型这一部分介绍了nested
在这里插入图片描述
也就是说,我们不仅可以定义type = nested, 还可以定义object类型,默认为array类型
在这里插入图片描述

那为什么不使用array类型呢,它也可实现嵌套设计?
原来是因为使用array后,数组的类型必须全部一致,这可就难为人了。可以看到我们的项目中的映射。
event数组中,createFileTime字段是long类型、fileAuthor是keyword类型,因此只能选择nested类型了。

接着继续看思维导图,可以发现,nested嵌套查询不属于复合查询,聚合查询,而是属于特定查询中的父子文档检索。

在这里插入图片描述
非常不错,直到这里,我们才算是真正掌握吸收了nested的知识点,快去和同事同学分享吧

http://www.yayakq.cn/news/461895/

相关文章:

  • 公司主页网站怎么做石家庄网站建设找哪家
  • 建设网站需要公司吗兰州大学网页与网站设计
  • 网站制作前必须做的事情有哪些简洁白wordpress瀑布
  • 企业邮箱地址怎么填wordpress分类设置seo
  • 婚恋网站 没法做简单的wordpress模板
  • 做平面设计的网站微信分销商城
  • 大连专业模板网站制作公司wordpress运行php文件下载
  • 网站开发导航oneup wordpress
  • 汕头食品骏域网站建设网站建设基础书籍
  • 网站制作公司怎么运营青岛正规的网站建设公司
  • 现在建网站可以赚钱吗视频素材网免费
  • 有哪些比较好的做ppt好的网站咨询公司组织架构
  • 请问做网站需要什么木疙瘩h5官网
  • 西安建筑公司网站建设国外游戏网站设计
  • 辽icp备鞍山公司中企动力提供网站建设宠物网站制作内容
  • 用织梦系统做的2个网站要把它都上传到服务器上吗推广服务商
  • 广东省城乡建设厅网站首页网站域名备案注销
  • 北京建站报价求个网站你明白的 知乎
  • 全球采购网站遵义网站开发公司
  • 网站建设策划书的基本格式邮箱注册申请官网
  • 怎么用dw网站怎么建设电子电路自学网站
  • 上海高端网站开发公司网站建设 分析
  • 某一网站seo策划方案网站首页三张海报做多大
  • 技术支持凯里网站建设开发微信小程序游戏要多少钱
  • 中文域名网站链接无法打开免费网站推广网址
  • 视频网站自己怎么做企业网站的制作哪家好
  • 上海建设三类人员网站wordpress 柒比贰主题
  • 自己的网站怎么维护asp网站相册
  • 网站页面优化分析温州捷创网站建设
  • 三维家装设计软件seo网络营销公司