elasticsearch⑤基本用法-高级查询

  • 子条件查询:特定字段所指特定值
  • 复合条件查询:以一定的逻辑组合子条件查询

子条件查询:

  • query context
    在查询过程中,除了判断文档是否满足查询条件外,ES还会计算一个_score来标识匹配程度
  • 全文本查询:针对文本类型数据
    ①模糊匹配match

    关键字match会匹配到elasticsearch或者入门相关的词
    {
    “query”:{
    “match”:{
    “title”:”elasticsearch入门”
    }
    }
    }

    ②短语匹配

    关键字match_phrase,被匹配的词中必须有“elasticsearch入门”,并且词语结构和顺序都要一样,比如”elasticsearch快速入门”是无法匹配的
    {
    “query”:{
    “match_phrase”:{
    “title”:”elasticsearch入门”
    }
    }
    }

    ③多个字段匹配查询

    关键字multi_match.query后跟的是查询条件,fields后面是需要查询的字段(此处用中括号“]”)
    {
    “query”:{
    “multi_match”:{
    “query”:”悟空”,
    “fields”:[“author”,”title”]
    }
    }
    }

    ④语法查询

    关键字query_string, 可以在条线中用“OR” ,”AND” (注意大写)
    {
    “query”:{
    “query_string”:{
    “query”:”悟空 OR 李四”,
    “fields”:[“author”,”title”]
    }
    }
    }

  • 字段级别查询:针对结构化数据,入数字,日期等
    ①普通查询

    关键字term,
    {
    “query”:{
    “term”:{
    “word_count”:5000
    }
    }
    }

    ②范围查询,可以用于数字和时间(时间可以用“now”表示现在)

    gte大于等于,lte小于等于。(e=equals表示等于),
    {
    “query”:{
    “range”:{
    “word_count”:{
    “gte”:100,
    “lte”:5000
    }
    }
    }
    }

  • filter context
    在查询过程中,只判断该文档是否满足条件。只有yes或者no

    filter是elasticsearch用来做数据过滤的,而且对数据进行缓存,需要结合bool使用
    {
    “query”:{
    “bool”:{
    “filter”:{
    “term”:{
    “word_count”:500
    }
    }
    }
    }
    }

    复合条件查询

  • 固定分数查询:关键字constant_score

    固定分数查询只支持filter用来过滤数据,boots用来指定匹配度(匹配分数)。我用的6的版本,如果不知道的话查询的数据都是1
    {
    “query”:{
    “constant_score”:{
    “filter”:{
    “match”:{
    “title”:”elasticsearch人门”
    }
    },
    “boost”:0.6931472
    }
    }
    }

  • 布尔查询
    ①,should表示应当,内部的match是“或”的关系

    {
    “query”:{
    “bool”:{
    “should”:[
    {
    “match”:{
    “author”:”李四”
    }
    },
    {
    “match”:{
    “title”:”elasticsearch”
    }
    }
    ]
    }
    }
    }

    ②,must表示必须,内部的match是“与”的关系.

    {
    “query”:{
    “bool”:{
    “must”:[
    {
    “match”:{
    “author”:”李四”
    }
    },
    {
    “match”:{
    “title”:”elasticsearch”
    }
    }
    ]
    }
    }
    }

    ③ must_not 相当于“非”,必须不是条件中的数据

    {
    “query”:{
    “bool”:{
    “must_not”:[
    {
    “match”:{
    “author”:”李四”
    }
    },
    {
    “match”:{
    “title”:”elasticsearch”
    }
    }
    ]
    }
    }
    }

群号:790579479,只限交流,欢迎大神前来指点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值