索引中的字段Map为:
"sequence_number" : {
"type" : "long",
"copy_to" : [
"_custom_all"
]
}
使用搜索查询作为
POST /my_index/_search
{
"query": {
"term": {
"sequence_number": {
"value": "we"
}
}
}
}
我收到错误消息:
,"index_uuid":"FTAW8qoYTPeTj-cbC5iTRw","index":"my_index","caused_by":{"type":"number_format_exception","reason":"For input string: \"we\""}}}]},"status":400}
at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:260) ~[elasticsearch-rest-client-7.1.1.jar:7.1.1]
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:238) ~[elasticsearch-rest-client-7.1.1.jar:7.1.1]
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:212) ~[elasticsearch-rest-client-7.1.1.jar:7.1.1]
at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1433) ~[elasticsearch-rest-high-level-client-7.1.1.jar:7.1.1]
at
我怎么能忽略数字\格式\异常错误,这样查询就不会返回任何东西,或者忽略这个过滤器-任何一个都是可以接受的。
提前谢谢。
1条答案
按热度按时间odopli941#
您要查找的内容是不可能的,理想情况下,您应该在数字字段上启用cohere,以便索引不包含脏数据。
最好的解决方案是在生成elasticsearch查询的应用程序中(您应该检查
NumberFormatExcepton
如果您正在搜索数字字段,因为您的索引首先不包含脏数据(如果您的应用程序中出现异常,请拒绝查询)。编辑:另一个有趣的方法是在插入es之前验证数据,使用@prakash建议的validate api,唯一的问题是它将添加另一个网络调用,但如果您的应用程序对延迟不敏感,则可以将其用作解决方法。