前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ES中的查询

ES中的查询

作者头像
苦咖啡
发布2018-04-28 12:56:36
4.5K0
发布2018-04-28 12:56:36
举报
文章被收录于专栏:我的博客我的博客

一、查询语句形式 1.叶子语句 2.复合语句(一条复合语句可以是多条叶子语句和多个复合语句组成)

二、查询和过滤的区别 1.过滤是将查询设置为是否匹配(只有是和否两种情况),查询会缓存 2.查询是判断文档是否匹配同时判断文档的匹配程度(_score字段),查询不缓存 三、查询 1.match_all查询简单的匹配所有文档 { “match_all”: {}} 2.match匹配指定字段(可能是精确查询也可能是全文查询) {“match”: {“age”:26 }} 3.multi_match在多个字段上执行match查询 “multi_match”: { “fields”:[“about” ,”first_name” ],        “query”: “build too” } 4.range查询找出落在指定区间内的数字或者时间 {     “range”: {         “age”: {             “gte”:  20,             “lt”:   30         }     } } gt 大于 gte 大于等于 lt 小于 lte 小于等于 5.term查询用于精确匹配 { “term”: { “age”:    26           }} 6.terms查询允许指定多个值匹配 { “terms”: { “age”:    [26,25]           }} 7.exists查询文档中包含指定字段有值 {     “exists”:   {         “field”:    “create_time”     } } 备注:Missing Query is removed in ES 5.0.

四、组合多查询 a)使用bool查询可以满足如下条件 1.must 文档必须匹配这些条件 2.must_not 文档必须不匹配这些条件 3.should 满足条件当中任意语句 4.filter 必须匹配(不评分,根据过滤条件来筛选文档) bool查询案例: GET megacorp/employee/_search {   “query”:{     “bool”: {         “must”:{ “match”: { “about”: “build ” }         },         “filter”: {           “match”: {“age”:26}         }     }   } }

b)使用constant_score可以取代只有filter的bool查询 constant_score查询案例: GET megacorp/employee/_search {   “query”:{     “constant_score”: {         “filter”: {           “match”: {“age”:26}         }     }   } }

五、验证查询 _validate/query 检查查询语法是否合法 _validate/query?explain 分析查询错误信息 验证查询使用案例: GET megacorp/employee/_validate/query {    “query”: {       “match2” : {          “4age” : “a2t”       }    } } 备注:match2 这个故意写错了

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年6月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档