我已经为索引中的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"
不起作用.我错过了什么吗?
该"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.*" } } }'