ElastaicSearch 查询

match_all:匹配所有
match:分词单个匹配 【分词包含query,就可以被检索到,类似contains包含】
multi_match:分词多个匹配 【任何一个分词包含query,就可以被检索到】
term:全词单个匹配
terms:全词多个匹配
bool:组合查询
range:范围查询
aggs:聚合查询
query可以理解为SQL里面的where

1.1 查询全部

可以通过以下两种方式查询所有数据
下面两种查询完全等价

POST  索引/_search
{
  "query": {
    "match_all": {}
  }
}
GET 索引/_search

1.2 匹配查询

POST 索引/_search
{
  "query": {
    "match": {
      "name": "收藏"
    }
  }
}

1.3 字段匹配查询

POST 索引/_search
{
  "query": {
    "multi_match": {
      "query": "test", 
      "fields": ["name", "tag"]
    }
  }
}

1.4 关键字精确查询

单个匹配

GET /索引/_search
{
  "query": {
    "term": {
      "id" : 1229
    }
  }
}

多个匹配

GET /索引/_search
{
  "query": {
    "terms": {
      "id" : [1229, 2338]
    }
  }
}

1.5 指定查询字段

只返回_source指定的字段

GET /索引/_search
{
  "query": {
    "match_all": {}
  }
  , "_source": ["id", "name"]
}

1.6 过滤字段

"excludes”:指定排除字段
“Includes”:指定查询字段

GET /索引/_search
{
  "query": {
    "match_all": {}
  }, 
  "_source": {
    "excludes": ["id", "name"]
  }
}

1.7 组合查询

Bool 前置条件字段
Must ==
must_not !=
should or

GET /索引/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
          "price" : 29
          }
        },
        {
          "match": {
            "name" : "3.9收藏test"
          }
        }
      ]
    }
  }
}

1.8 范围查询

Range 潜质查询条件
Gt >
Gte >=
Lt <
lte <=

GET /索引/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 10,
        "lte": 20
      }
    }
  }
}

1.9 模糊查询

[fuzziness]编辑距离是将一个术语转换为另一个术语所需的一个字符更改的次数。 这些更改可以包括:

  • 更改字符(box→fox)
  • 删除字符(black→lack)
  • 插入字符(sic→sick)
  • 转置两个相邻字符(act→cat)
GET /索引/_search
{
  "query": {
    "fuzzy": {
      "name": {
        "value": "藏收", 
        "fuzziness": 2
      }
    }
  }
}

1.10 排序

sort 前置字段
Desc 降序
asc 生序

GET /索引/_search
{
"query": {
    "match_all": {}
  },
  "sort": [
    {
      "price": {
        "order": "desc"
      }
    },
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

1.11 分页查询

  • from:当前页的起始索引,默认从0开始, from = (pageNum - 1) * size,页数从第一页开始
  • size:每页显示多少条
GET /索引/_search
{
"query": {
    "match_all": {}
  },
  "from": 0,
  "size": 2
}

1.12 聚合操作(博大精深,还有很多种)

stats聚合,对某个字段一次性返回count,max,min,avg和sum五个指标

  • stats_aggs:聚合名称,任意
  • stats:聚合种类,其中指定需要聚合字段
  • Price:索引的其中一个字段
GET /索引/_search
{
  "aggs": {
    "state_aggs": {
      "stats": {
        "field": "price"
      }
    }
  }
}

结果:
{
…,
“aggregations” : {
“stats_aggs” : {
“count” : 5,
“min” : 2.0,
“max” : 5.0,
“avg” : 3.4,
“sum” : 17.0
}
}
}

示例:
Size 表示输出多少个

GET /索引/_search
{
  "query": {
    "term": {
      "name": {
        "value": "test"
      }
    }
  },
  "sort": [
    {
      "price": {
        "order": "desc"
      }
    }
  ],
  "aggs": {
    "group": {
      "terms": {
        "field": "price",
        "order": {
          "_count": "desc"
        }, 
        "size": 10
      }
    }
  }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值