Elasticsearch 的查询过滤语句
2015-09-01 09:20:01 最后更新: 2015-09-02 11:35:00 访问数量:4942
2015-09-01 09:20:01 最后更新: 2015-09-02 11:35:00 访问数量:4942
Elasticsearch 提供了丰富的查询过滤语句,对于查询过程中的各种场景非常有用
term 用于精确匹配,常用于数字、日期、布尔值或 not_analyzed 字符串的匹配
terms 跟 term 有点类似,但 terms 允许指定多个匹配条件
如果某个字段指定了多个值,那么文档需要一起去做匹配
range 过滤允许我们按照指定范围查找一批数据
范围操作符包括:
exists 和 missing 过滤可以用于查找文档中是否包含指定字段或没有某个字段,类似于SQL语句中的 IS_NULL 条件
这两个过滤只是针对已经查出一批数据来,但是想区分出某个字段是否存在的时候使用
prefix 可以通过给定的前缀对字段进行过滤
使用regexp查询能够让你通过正则表达式对字段进行过滤
这个正则表达式的规定了词条需要以W开头,紧跟着一个0到9的数字,然后是一个或者多个其它字符
可以在 wildcard 过滤中使用 * 作为通配符进行查询,但是查询语句中需要对以下字符进行转义:
+ - && || ! ( ) { } [ ] ^ " ~ * ? : \ /
query_string 对于 analysis 的字段进行检索可以达到全文检索的目的
他会首先将查询字符串传入合适的分词解析器,用来得到需要查询的词条列表
对于 not_analysis 的字段,他与 wildcard 是一样的
与 query_string 类似,match 是另一个高级查询的过滤条件
match 对于 analysis 的字段进行检索前也会先到分词解析器中获取需要查询的词条列表
但与 query_string 不同,得到词条列表后,match 只会使用 term 来执行具体的查询
multi_match查询允许你做match查询的基础上同时搜索多个字段
bool 过滤可以用来合并多个过滤条件查询结果的布尔逻辑,它包含以下操作符
这些参数可以分别继承一个过滤条件或者一个过滤条件的数组
match_all 用于查询所有文档,是没有查询条件下的默认语句
此查询常用于合并过滤条件
比如说你需要检索所有的邮箱,所有的文档相关性都是相同的,所以得到的_score为1
欢迎关注微信公众号,以技术为主,涉及历史、人文等多领域的学习与感悟,每周三到七篇推文,只有全部原创,只有干货没有鸡汤