首页 > 其他分享 >ElasticSearch 7中获取某类型为List<String>的字段的元素个数

ElasticSearch 7中获取某类型为List<String>的字段的元素个数

时间:2022-11-11 20:47:21浏览次数:42  
标签:pipeline List 个数 ids ElasticSearch 文档 type groupSize

在ElasticSearch中,如果我们设置某字段的类型为keyword,但是我们实际存进去的是一个形如List<String>的值时,这时候Es也是可以保存成功,存储后的数据类似于这样

{
    "ids": [
        "123345",
        "1231231",
        "1231265879"
    ],
    "status": "1"
}

这时候通过集合中任何一个值进行查询筛选时都可以命中到当前文档,由此可以实现诸如通过分类编号、标签编号、群组成员查询文档信息等场景。

但有时候我们可能想获取ids中有多少个元素,因为有需求要查询某区间内的分布情况,如ids的大小为5~10,10~50的有多少文档命中,对应的是哪些文档。

这里提供一个比较简单的解决方案,就是通过Es的pipeline以及新增一个计数字段来进行处理。

1、新建pipeline

PUT _ingest/pipeline/add_group_size_pipeline
{
  "processors": [
    {
      "script": {
        "lang": "painless",
        "source": "ctx.groupSize = ctx.ids.size();"
      }
    }
  ]
}

这个前置预处理器就是在保存文档前,先计算文档中某个字段的元素数量,并赋值到文档中具体某个字段中

2、将刚才新建的pipline添加到索引的设置项中

PUT ids_manager
{
  "settings": {
    "index": {
      "default_pipeline": "add_group_size_pipeline"
    }
  },
  "mappings": {
    "properties": {
      "ids": {
        "type": "keyword"
      },
      "groupSize": {
        "type": "keyword"
      },
      "createTime": {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss"
      },
      "updateTime": {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss"
      }
    }
  }
}

这样我们就可以通过groupSize字段进行筛选以满足对应的需求,以上Mapping仅演示使用,实际结构会复杂一点

标签:pipeline,List,个数,ids,ElasticSearch,文档,type,groupSize
From: https://www.cnblogs.com/yourxiong/p/16881793.html

相关文章

  • docker自建elasticsearch镜像
    一、dockerhub中没有elasticsearch:6.2.4版本的镜像(你敢信!!),没有办法只有自己弄了二、参考官网镜像的构建过程(尼玛看不懂)  备注:看不懂呀,不过有些过......
  • CentOS 7 安装 ElasticSearch 8.5
    参考:InstallElasticsearchfromarchiveonLinuxorMacOS|ElasticsearchGuide[8.5]|ElasticInstallKibanafromarchiveonLinuxormacOS|KibanaGuide[......
  • list<map>转xml
    listmap转xml//注意导入的包是这个importorg.jdom2.Element;importorg.jdom2.Document;importorg.jdom2.output.Format;importorg.jdom2.output.XMLOutputter;......
  • 电影推荐系统项目实战:环境配置与安装:-----Linux环境下 ElasticSearch(单节点)环境配置
    1通过WGET下载压缩包:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.2.tar.gz  2.修改Linux配置参数:在文件末尾添加:sudo......
  • Elasticsearch_API操作
     Elasticsearch的Java客户端非常强大;它可以建立一个嵌入式实例并在必要时运行管理任务。运行一个Java应用程序和Elasticsearch时,有两种操作模式可供使用。该应用程序可在El......
  • java 更新list内的元素
    参考:https://blog.csdn.net/liangqi1234/article/details/50176451/***更新list内的元素。*@paramobjlist*@paramoldObj旧对象*@paramnewObj要更新的对象*......
  • ElasticSearch7.0实例精讲之第一章入门
    目录1、技术要求2、下载并安装Elasticserch3、设置网络4、设置节点5、设置linux系统6、设置不同的节点系统7、设置协调器节点8、设置采集节点9、在elasticsearch安装插件10......
  • .net ElasticSearch-Sql 扩展类【原创】
    ElasticSearch-Sql.net类库(sdk)1)支持将查询结果转换成datatable形式,便于界面绑定和数据导出等。2)代码简单易懂,便于改进并提高稳定性和性能。(拷贝立即......
  • String类型List排序
    一、升序:@Testpublicvoidtest1(){//创建ArrayList集合对象List<String>al=newArrayList<>();//往集合里添加数据al.add("aa");al.add("bb");......
  • asp.net中checkboxlist判断至少选择一项的方法
    .aspx代码如下:<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="1_CheckBoxList.aspx.cs"Inherits="_1_CheckBoxList"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXH......