gpt4 book ai didi

regex - 在Elasticsearch中使用仅包含一个单词的字符串字段进行通配符搜索

转载 作者:行者123 更新时间:2023-12-03 02:28:30 24 4
gpt4 key购买 nike

我有一个用例,其中索引中的字符串类型字段具有单个单词(车辆编号)作为其值,并且需要按以下方式进行搜索:*abc*
实现它的最佳方法是什么?相同的性能影响是什么?

当前,我正在使用以下查询:_search?q=vehicleNumber:*119*在我看来未经高度优化。

最佳答案

使用领先的通配符可能会非常昂贵……如果您主要使用该通配符搜索数字“substrings”,并且其格式已标准化(以XX-12345-AB的形式考虑车牌号),则可以将这些数字提取到其他字段,然后对其进行范围查询。这肯定比在字符串上使用通配符要快。

另一个选择是使用regex queries,如果您例如知道要搜索的位置,这将很有用。事实证明IMEI确实具有某种结构-AA-BBBBBB-CCCCCC-EE-来自wiki

Slots

因此,如果您要查找匹配的序列号,则可以跳到索引8:

GET /_search
{
"query": {
"regexp": {
"vehicleNumber": {
"value": ".{8,}119.*"
}
}
}
}

总而言之, regexpwildcard使用 same automaton in the background,因此在进行 leading *查询时在这两者之间进行选择不会提高速度性能。但是,当您知道位置时,我怀疑 regexp可能会对此进行更优化。

关于regex - 在Elasticsearch中使用仅包含一个单词的字符串字段进行通配符搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60506559/

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