es查询nested字段类型数组长度来判断是否包含多个值

这篇具有很好参考价值的文章主要介绍了es查询nested字段类型数组长度来判断是否包含多个值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用es时经常会碰到查询数组格式的字段是否有多个值的情况,总结一下。

一、字段类型为keywork时

"id": [
    "1",
    "2"
 ]

当字段类型为keyword时(创建索引后,添加的第一条数据id字段格式为数组格式,便会导致后续的数据都是数组),查询id字段有多值时用以下查询语句:

{
  "query": {
    "script": {
      "script": "doc['id'].size() > 1"  //1代表的是数组长度
    }
  }
}

二、字段类型为nested类型时

"entity": [
    {
        "id": "1"  
        "name": "张三"
    },
    {
        "id": "2"
        "name": "李四"
    }
]                     

当字段类型为nested类型时,需要把entity字段的include_in_parent属性设置成true,例如:

"entity": {
    "type": "nested",
    "include_in_parent": true,    //默认为false
    "properties": {
        "id": {
            "type": "keyword"
        },
        "name": {
            "type": "text",
            "fields": {
                "completion": {
                    "type": "text",
                    "analyzer": "completion_analyzer"
                },
                "keyword": {
                    "type": "keyword"
                },
                "pinyin": {
                    "type": "text",
                    "analyzer": "full_pinyin_analyzer"
                }
            },
            "analyzer": "ik_max_word"
        }
    }
}

以下查询语句才会生效:

{
  "query": {
    "script": {
      "script": "doc['entity.id'].size() > 1"  //1代表的是数组长度
    }
  }
}

include_in_parent:设置所有嵌套对象属性的include_in_parent值,可选值有true和false。值为true则在嵌套对象中的所有所有字段会被添加到父文档的作为标准字段,默认为false。文章来源地址https://www.toymoban.com/news/detail-512239.html

到了这里,关于es查询nested字段类型数组长度来判断是否包含多个值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch(019):es常见的字段映射类型之数组类型(arrays)

    在Elasticsearch中,没有专用的array数据类型。默认情况下,任何字段都可以包含零个或多个值,但是,数组中的所有值都必须具有相同的数据类型。 这一点是区别于nested的,nested指的对象的集合。而arrays则是单一类型的数组集合而已。 此外,不需要专门的类型类定义数组类型

    2024年02月13日
    浏览(44)
  • 使用python在es中基本操作详解(添加索引、查询索引、删除索引、判断索引是否存在、添加数据、更新数据、查询数据)

    示例代码1: 运行结果: 示例代码2: 运行结果: 示例代码3: 运行结果: 注意: 对比上面几种建立索引的方法,是有一定区别的。根据响应结果可以看出: es. indices.create() 方法是标准的创建索引的方法,其它几种方法在创建索引的同时也会生成一条数据,并且生成mappin

    2024年02月11日
    浏览(196)
  • .net 6 使用 NEST 查询,时间字段传值踩坑

    说明: 同事搭建的业务系统,最开始使用  log4net  记录到本地日志. 然后多个项目为了日志统一,全部记录在  Elasticsearch  ,使用  log4net.ElasticSearchAppender.DotNetCore. 然后搭建了 Kibanal   对  Elasticsearch   进行查询.  但是项目组开发人员众多,不是每个人都想要学会如何在  Kibana

    2024年02月01日
    浏览(39)
  • es的nested查询

    一、一层嵌套 mapping: 导入数据到索引: 使用DevTools执行多层嵌套查询 Java查询语句: 二、多层嵌套 mapping: 导入数据到索引 使用DevTools执行多层嵌套查询 Java查询语句:

    2024年02月03日
    浏览(54)
  • Elasticsearch 8.X 如何依据 Nested 嵌套类型的某个字段进行排序?

    这是来自社区的一个真实企业场景问题。 https://elasticsearch.cn/question/13135 如下所示, 希望在查出的结果后, 对结果进行后处理,对tags列表,根据depth进行排序。 Elasticsearch 能支持的排序方式罗列如下: 包含但不限于: 基于特定字段的排序 基于Nested对象字段的排序 基于特定

    2024年02月02日
    浏览(55)
  • PHP分析二维数据表(长度|数字字段|空值|纯姓名|英文用户名|科学计数|是否等长|是否唯一)

    先看图,后有完整代码    仅供娱乐!

    2024年02月22日
    浏览(61)
  • ES中 Nested 类型的原理和使用

    官方定义 :官方释义:这个nested类型是object一种数据类型,允许对象数组以相互独立的方式进行索引 nested属于object类型的一种,是Elasticsearch中用于复杂类型对象数组的索引操作。Elasticsearch没有内部对象的概念,因此,ES在存储复杂类型的时候会把对象的复杂层次结果扁平化

    2024年01月17日
    浏览(49)
  • es修改字段ignore_above属性长度

    在ElasticSearch中keyword,text类型字段都可以设置ignore_above属性(默认是10) ,表示最大的字段值长度,超出这个长度的字段将不会被索引,但是会存储, ignore_above一般设置为256(筛选该字段,并且去除非分词字段的大小限制) ,设置为30000可能会出现BulkFailureException keyword类型:

    2024年02月17日
    浏览(53)
  • Elasticsearch中object类型与nested类型以及数组之间的区别

    0、一般情况下用object 类型来查es中为json对象的字段数据,用nested来查es中为JsonArray数组类型的字段数据。 1、默认情况下ES会把JSON对象直接映射为object类型,只有手动设置才会映射为nested类型 2、object类型可以直接使用普通的逗号(.)查询,比如 3、nested类型的查询需要使用

    2024年01月22日
    浏览(83)
  • SQ工具|2|ArcGIS数据结构(字段名称、字段长度、字段类型、允许为空)的修改

    方式一:借用ArcToolBox中的合并工具(方法来自于GIS思维) 数据管理工具常规合并 右侧四个按钮可实现添加字段、删除字段及调整字顺序的需求   右击目标字段,点击属性,即可实现更改字段名称、类型、长度及允许空值的功能。 点击确定后即可生成所需数据。 但! 我们使

    2024年02月13日
    浏览(94)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包