Elasticsearch查询

一、查询语句形式
 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 这个故意写错了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值