当前位置:  开发笔记 > 数据库 > 正文

Elasticsearch中的null_value映射

如何解决《Elasticsearch中的null_value映射》经验,为你挑选了1个好方法。

我已经为索引中的tweetb类型创建了一个映射twitter:

curl -XPUT http://www.mydomain:9200/twitter/tweetb/_mapping -d '{
  "twitter": {
    "mappings": {
      "tweetb": {
        "properties": {
          "message": {
            "type": "string",
            "null_value": "NA"
          }
        }
      }
    }
  }
}'

然后,我把一个文件:

curl -XPUT http://www.mydomain.com:9200/twitter/tweetb/1 -d '{"message": null}'

然后,我试图让插入的doc回来:

curl -XGET http://www.mydomain:9200/twitter/tweetb/1

那回来了:

{
  "_index": "twitter",
  "_type": "tweetb",
  "_id": "1",
  "_version": 2,
  "found" : true,
  "_source" : { "message": null }
}

"message" : "NA"_source田野里期待着.但是,它似乎"null_value"不起作用.我错过了什么吗?



1> pickypg..:

"null_value"字段映射不改变存储的值,而它的变化是在搜索中使用的值.

如果您尝试搜索您的"message"使用"NA",则它应显示在结果中:

curl -XPOST http://www.mydomain.com:9200/twitter/tweetb/_search -d '{
  "query" : {
    "match" : { "message" : "NA" }
  }
}'

有趣的是,它应该以实际价值回应null.现在,如果您添加一个原始值按字面意思"NA"并执行搜索的新文档,那么您应该看到上述查询返回了两个结果 - 一个带有值,另一个带有已null定义的.

也许有类似的兴趣,这适用于其他查询以及它如何被索引,这就是小写n.*匹配,但N.*半惊人地不匹配的原因:

curl -XPOST http://www.mydomain.com:9200/twitter/tweetb/_search -d '{
  "query" : {
    "regexp" : { "message" : "n.*" }
  }
}'

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有