php - 数字格式异常对于字符串类型

标签 php laravel elasticsearch lumen

我有这样的映射

    {
    "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"
                    },
                }
            }
        }
    }
}

我可以获得分数以及“NA”的整数,因此我将类型映射为字符串,但是在将数据发布到索引时却出现了数字格式异常。

例如:

如果我将第一个数据发布为整数,然后再添加“NA”。我得到这些异常(exception)。

在检查我的日志文件时,出现以下错误:

[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}"] []

最佳答案

您的映射不正确。假设users是索引名称,而user_profiles是类型:

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

您在mappings之前缺少user_profiles

关于php - 数字格式异常对于字符串类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39219814/

相关文章:

php - Paypal PHP SDK 支付状态

php - Laravel View Composer "Use of undefined constant"

laravel - [laravel][npm] 我无法使用 swiper 错误 Uncaught TypeError : Swiper is not a constructor

java - Elasticsearch River - java.lang.String 无法转换为 java.util.Map

elasticsearch - 如何根据elasticsearch中的查询词数计算分数?

php - 安全取消订阅链接 - 多少加密程度才足够?

php - 如何在 Laravel 中模拟验证规则

php - 在php中计算文件夹中的文件数

php - artisan 迁移错误 “Class ' Doctrine\\DBAL\\Driver\\PDOMySql\\Driver' not found”

Django Haystack ElasticSearch InvalidJsonResponseError : <Response [404]>