gpt4 book ai didi

elasticsearch - Elasticsearch正则表达式查询

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

我正在运行elasticsearch v1.1.1,但无法从正则表达式搜索中获取结果。

{
"query" : {
"regexp" : {
"lastname" : "smit*"
}
}
}

返回0个结果(当我知道我的数据中有“史密斯”时)。

我也尝试过:
{
"query" : {
"filtered" : {
"filter" : {
"regexp" : {
"lastname" : "smit*"
}
}
}
}
}

任何帮助,将不胜感激。

最佳答案

因此,首先,这很大程度上取决于您对字段建立索引的方式-是否分析,使用哪种标记器,将其小写等等。

要回答有关正则表达式查询的特定问题,假设您的字段索引为“smith”(所有小写字母),则应将搜索字符串更改为“smit。*”,该字符串应与“smith”匹配。 “打。”应该也可以。

原因是在regexp中(与通配符不同)。匹配任何字符。 “*”匹配任意数量的前一个字符。因此您的搜索将匹配“smitt”或“smittt”。构造“。*”表示匹配前一个字符的任何数字(包括0),即“。”。匹配任何。两者的组合相当于通配符“*”的正则表达式。

就是说,我要提醒您,正则表达式和通配符搜索在文本索引中可能会带来很大的性能挑战,具体取决于字段的性质,如何将其编入索引以及文档的数量。这些类型的搜索可能非常有用,但是有一个以上的人已经对小数据集进行了通配符或正则表达式搜索,但这些结果使生产性能感到失望。请谨慎使用。

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html

ElasticSearch Regexp Filter

关于elasticsearch - Elasticsearch正则表达式查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27411079/

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