elasticsearch-wildcard、regexp通配符与正则表达式查询
来源:互联网 发布:彩虹六号配件知乎 编辑:程序博客网 时间:2024/05/18 17:24
通配符与正则表达式查询
假设将邮编作为 not_analyzed
的精确值字段索引,所以可以为其创建索引,如下:
PUT /my_index{ "mappings": { "address": { "properties": { "postcode": { "type": "string", "index": "not_analyzed" } } } }}
与 prefix
前缀查询的特性类似, wildcard
通配符查询也是一种底层基于词的查询,与前缀查询不同的是它允许指定匹配的正则式。它使用标准的 shell 通配符查询: ?
匹配任意字符, *
匹配 0 或多个字符。
这个查询会匹配包含 W1F 7HW
和 W2F 8HW
的文档:
GET /my_index/address/_search{ "query": { "wildcard": { "postcode": "W?F*HW" (1) } }}
?
匹配1
和2
,*
与空格及7
和8
匹配。
设想如果现在只想匹配 W
区域的所有邮编,前缀匹配也会包括以 WC
开头的所有邮编,与通配符匹配碰到的问题类似,如果想匹配只以 W
开始并跟随一个数字的所有邮编, regexp
正则式查询允许写出这样更复杂的模式:
GET /my_index/address/_search{ "query": { "regexp": { "postcode": "W[0-9].+" (1) } }}
这个正则表达式要求词必须以
W
开头,紧跟 0 至 9 之间的任何一个数字,然后接一或多个其他字符。
这也意味着需要同样注意前缀查询存在性能问题,对有很多唯一词的字段执行这些查询可能会消耗非常多的资源,所以要避免使用左通配这样的模式匹配(如: *foo
或 .*foo
这样的正则式)。
0 0
- elasticsearch-wildcard、regexp通配符与正则表达式查询
- 通配符(WildCard)与正则表达式(Regular Expression)
- 正则表达式与 Linux shell 中的通配符(wildcard)
- [Elasticsearch] 部分匹配 (二) - 通配符及正则表达式查询
- [Elasticsearch] 部分匹配 (二) - 通配符及正则表达式查询
- [Elasticsearch] 部分匹配 (二) - 通配符及正则表达式查询
- 通配符匹配(Wildcard Matching)与正则表达式匹配(Regular Expression Matching)解法解析
- 通配符与正则表达式
- 通配符与正则表达式
- 通配符与正则表达式
- 通配符与正则表达式
- 正则表达式与通配符
- 通配符与正则表达式
- 通配符与正则表达式
- 通配符与正则表达式
- 通配符与正则表达式
- 通配符与正则表达式
- 通配符与正则表达式
- oracle对表添加主键约束的sql语句
- Imitation- Seahorse genome
- SEO常见术语
- HDU1863 畅通工程
- 设计阶段如何画用例视图(Use-Case View)
- elasticsearch-wildcard、regexp通配符与正则表达式查询
- 110. Balanced Binary Tree
- Delphi CreateMutex 防止程序多次运行
- strong和copy
- 类与类之间的关系图(Class Diagram,UML图)
- 前端代码调试:Webstorm调试js
- Oracle存储过程实例
- UML建模之活动图介绍(Activity Diagram)
- 算法的力量万变不离其宗