gpt4 book ai didi

Elasticsearch [1.4.4] :Range search on numeric index with non numeric input

转载 作者:行者123 更新时间:2023-12-02 23:34:59 28 4
gpt4 key购买 nike

我正在使用 Elasticsearch Java API 创建索引并编写搜索查询。
索引是在各种字段上创建的。字段之一是创建索引的数字(整数)。

现在我们得到的输入是字符串的形式。我们必须在所有字段中搜索所提供的输入。要搜索我们正在使用的数字字段

QueryBuilders.rangeQuery() method.

但是当它在“to”或“from”字段中遇到任何非整数值时,它会抛出
SearchPhaseExecutionException[Failed to execute phase [query].
nested: NumberFormatException[For input string: \"30y\"]

我怎样才能避免这种情况?我们没有得到任何搜索结果很好,但我想避免这种异常,因为在某些情况下我们会得到非整数输入。

另一种选择是检查所有输入 token ,我想避免这样做,因为它会添加另一个级别的检查,这会影响性能。

有什么办法可以用 来完成这个任务吗? Elasticsearch API ?

最佳答案

Another option is to check all the input tokens, which I want to avoid because it will add another level of check which will impact performance.



检查/验证用户输入是您应该做的事情 总是 无论如何,无论您的性能要求是什么。如果不这样做,您会不必要地将集群暴露给未知的 future 威胁,而且 known ones最近造成了一些损害,这可能比花几毫秒清理用户输入对您的集群和/或业务产生更严重的影响。 Elasticsearch 很灵活,可以创造奇迹,但你也必须好好利用它。

话虽如此,如果你真的想避免 secure coding best practices ,您可以使用以下查询,如果输入数据不合规,该查询不会吠叫。
{
"query": {
"simple_query_string": {
"query": "numfield:[10y TO *]"
}
}
}

simple_query_string 相当于 query_string 但对输入更宽容,永远不会抛出异常。

关于 Elasticsearch [1.4.4] :Range search on numeric index with non numeric input,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32420514/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com