1
votes

I have a mapping like this

    {
    "settings": {
            "analysis": {
                "filter": {
                    "nGramFilter": {
                        "type": "nGram",
                        "min_gram": 3,
                        "max_gram": 20,
                        "token_chars": [
                            "letter",
                            "digit",
                            "punctuation",
                            "symbol"
                        ]
                    },
                    "email" : {
                        "type" : "pattern_capture",
                        "preserve_original" : 1,
                        "patterns" : [
                            "([^@]+)",
                            "(\\p{L}+)",
                            "(\\d+)",
                            "@(.+)"
                        ]
                    },
                    "number" : {
                        "type" : "pattern_capture",
                        "preserve_original" : 1,
                        "patterns" : [
                            "([^+-]+)",
                            "(\\d+)"
                        ]
                    },
                    "edgeNGramFilter": {
                        "type": "nGram",
                        "min_gram": 1,
                        "max_gram": 10,
                        "token_chars": [
                            "letter",
                            "digit",
                            "punctuation",
                            "symbol"
                        ]
                    }
                },
                "analyzer": {
                    "nGramAnalyzer": {
                        "type": "custom",
                        "tokenizer": "whitespace",
                        "filter": [
                            "lowercase",
                            "nGramFilter"
                        ]
                    },
                    "whitespaceAnalyzer": {
                        "type": "custom",
                        "tokenizer": "whitespace",
                        "filter": [
                            "lowercase"
                        ]
                    },
                    "email" : {
                       "tokenizer" : "uax_url_email",
                       "filter" : [ 
                            "email", 
                            "lowercase",  
                            "unique" 
                        ]
                    },
                    "number" : {
                       "tokenizer" : "whitespace",
                       "filter" : [ "number", "unique" ]
                    },
                    "edgeNGramAnalyzer": {
                        "type": "custom",
                        "tokenizer": "whitespace",
                        "filter": [
                            "lowercase",
                            "edgeNGramFilter"
                        ]
                    }
                }
            }
        },
    "users": {
        "mappings": {
            "user_profiles": {
                "properties": {
                    "firstName": {
                        "type": "string",
                        "analyzer": "nGramAnalyzer",
                        "search_analyzer": "whitespaceAnalyzer"
                    }, 
                    "lastName": {
                        "type": "string",
                        "analyzer": "nGramAnalyzer",
                        "search_analyzer": "whitespaceAnalyzer"
                    }, 
                    "email": {
                        "type": "string",
                        "analyzer": "email",
                        "search_analyzer": "whitespaceAnalyzer"
                    },
                    "score" : {
                        "type": "string"
                    },
                    "homeLandline": {
                        "type": "string",
                        "analyzer": "number",
                        "search_analyzer": "whitespaceAnalyzer"

                    },
                    "dob": {
                        "type": "date",
                        "format": "yyyy-MM-dd HH:mm:ss"
                    },
                    "mobile": {
                        "type": "integer"
                    },
                    "residenceCity": {
                        "type": "string",
                        "analyzer": "edgeNGramAnalyzer",
                        "search_analyzer": "whitespaceAnalyzer"
                    },
                    "created_at": {
                        "type": "date",
                        "format": "yyyy-MM-dd HH:mm:ss"
                    },
                }
            }
        }
    }
}

I can get the score as integer as well as "NA" so I mapped the type as string but while posting data to the index i am getting Number Format Exception.

For Example:

if I post first data as integer and followed by "NA". I am getting these exception.

while checking my log file I am getting this errors:

[2016-08-29 15:19:01] elasticlog.WARNING: Response ["{\"error\":{\"root_cause\":[{\"type\":\"mapper_parsing_exception\",\"reason\":\"failed to parse [score]\"}],\"type\":\"mapper_parsing_exception\",\"reason\":\"failed to parse [score]\",\"caused_by\":{\"type\":\"number_format_exception\",\"reason\":\"For input string: \"NH\"\"}},\"status\":400}"] []

1

1 Answers

0
votes

Your mapping is incorrect. It should be, assuming, users is the index name and user_profiles is the type:

{
   "users": {
      "mappings": {
         "user_profiles": {
            "properties": {
               "score": {
                  "type": "string"
               }
            }
         }
      }
   }
}

You have a missing mappings before user_profiles.