ElasticSearch null_value 与对象?

2024-01-03

是否可以使用一个对象null_valueElasticSearch 中的映射?

{
   "properties-v3": {
      "mappings": {
         "property": {
            "properties": {
               // ... omitting lots of properties for brevity
               "stats": { // <-- Need to populate this if null
                  "properties": {
                     "bookings": {
                        "type": "long",
                        "null_value": 0
                     },
                     "enquiries": {
                        "type": "long",
                        "null_value": 0
                     },
                     "favorites": {
                        "type": "long",
                        "null_value": 0
                     },
                     "pageViews": {
                        "type": "long",
                        "null_value": 0
                     }
                  }
               },
               // ... more properties here
            }
         }
      }
   }
}

If the stats上面映射中的属性为 null,我想创建一个对象,并根据其 null_value 映射填充属性。在基础属性上指定 null_value 似乎不起作用。

ElasticSearch 是否允许对象的 null_value 映射?


首先,让我们看看 null_value 做了什么。对于字段 name ,如果有 null_value 设置为某个值,则不会将此信息添加到 _source 中,而是将该值转到反向索引。这意味着您可以根据 null_value 进行搜索,但它不会显示在 _source 中。

举一个例子,假设我正在索引以下文档 -

{
  "class" : "10m
  "address" : "abcs"
}

在这里,假设对于字段名称,我们已将 null_value 启用为“John” 现在,如果我执行以下查询 -

{
   "query" : {
             "match" : {
                   "name" : "john"
              }
   }
}

即使它没有值为 john 的字段名称,它也会匹配上一个文档。但随后在返回的文档中将不会显示该值。这意味着 _source 无论如何都没有改变,只是我们正在改变整个上下文的搜索能力行为。

现在回到你的问题 - 如果你想将 null_value 放入一个对象中,比如说, 对于字段名称,将以下对象设置为 null_value

{
   "first_name" : "john",
   "last_name" : "dep"
}

然后,可以将 null_value 分别指定为 john 和 dep 两个字段 name.first_name 和 name.last_name 。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ElasticSearch null_value 与对象? 的相关文章

随机推荐