2014-04-01 13 views
16

मैं एक twitter सूचकांक में एक tweetb प्रकार के लिए एक मानचित्रण बनाया है:null_value मानचित्रण

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}' 

फिर, मैं डाला प्राप्त करने की कोशिश डॉक्टर वापस:

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

और वह लौटा:

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

मुझे _source फ़ील्ड में "message" : "NA" की उम्मीद थी। हालांकि, ऐसा लगता है कि "null_value" काम नहीं कर रहा है। क्या मैं कुछ भूल रहा हूँ?

उत्तर

29

"null_value" फ़ील्ड मैपिंग संग्रहीत मूल्य को नहीं बदलता है, बल्कि यह खोजों में उपयोग किए जाने वाले मान को बदलता है।

आप "NA" का उपयोग कर अपने "message" खोजने का प्रयास करें, तो यह परिणाम में दिखाई देनी चाहिए:

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.*" } 
    } 
}' 
+0

+1 उत्तर के अलावा प्रदान की गई अतिरिक्त जानकारी के लिए। – Kaunteya

संबंधित मुद्दे