-
Notifications
You must be signed in to change notification settings - Fork 0
ElasticSearch第七篇 查询条件
yangyp8110 edited this page Jan 17, 2018
·
1 revision
curl -XGET http://{host:port}/_search
- http://{host:port}/_search
在所有的索引中搜索所有的类型
- http://{host:port}/gb/_search
在 gb 索引中搜索所有的类型
- http://{host:port}/gb,user/_search
在 gb 和 user 索引中搜索所有的文档
- http://{host:port}/g*,u*/_search
在任何以 g 或者 u 开头的索引中搜索所有的类型
- http://{host:port}/gb/user/_search
在 gb 索引中搜索 user 类型
- http://{host:port}/gb,us/user,tweet/_search
在 gb 和 us 索引中搜索 user 和 tweet 类型
- http://{host:port}/_all/user,tweet/_search
在所有的索引中搜索 user 和 tweet 类型
- match_all
查询简单的 匹配所有文档。在没有指定查询方式时,它是默认的查询
- match
标准查询,如果在一个全文字段上使用 match 查询,在执行查询前,它将用正确的分析器去分析查询字符串;如果在一个精确值的字段上使用它, 例如数字、日期、布尔或者一个 not_analyzed 字符串字段,那么它将会精确匹配给定的值
- multi_match
查询可以在多个字段上执行相同的 match 查询
- range
查询找出那些落在指定区间内的数字或者时间 eg : {"range":{"age":{"gte":20,"lt":30}}} 被允许的操作符如下:
- gt 大于
- gte 大于等于
- lt 小于
- lte 小于等于
- term
查询被用于精确值 匹配,这些精确值可能是数字、时间、布尔或者那些 not_analyzed 的字符串
- terms
查询和 term 查询一样,但它允许你指定多值进行匹配。如果这个字段包含了指定值中的任何一个值,那么这个文档满足条件
- exists
查询被用于查找那些指定字段中有值 (exists) 的文档
- missing
查询被用于查找那些指定字段中无值 (missing) 的文档
- bool 查询
must
- 文档 必须 匹配这些条件才能被包含进来。
must_not
- 文档 必须不 匹配这些条件才能被包含进来。
should
- 如果满足这些语句中的任意语句,将增加 _score ,否则,无任何影响。它们主要用于修正每个文档的相关性得分。
filter
- 必须 匹配,但它以不评分、过滤模式来进行。这些语句对评分没有贡献,只是根据过滤标准来排除或包含文档。
将查询移到 bool 查询的 filter 语句中,这样它就自动的转成一个不评分的 filter 了。所有查询都可以借鉴这种方式。
- validate-query API 可以用来验证查询是否合法
GET http://{host:port}/{index}/{type}/_validate/query { "query": { "tweet" : { "match" : "really powerful" } } }
- 可以将 explain 参数 加到查询字符串中,不合法的查询验证会返回不合法的原因;对于合法查询,使用 explain 参数将返回可读的描述。
GET http://{host:port}/{index}/{type}/_validate/query?explain { "query": { "tweet" : { "match" : "really powerful" } } }