ElasticSearch6 学习(五) 使用DSL语句查询

﹏ヽ暗。殇╰゛Y 2021-11-01 19:34 552阅读 0赞

前言:

学习路径:https://www.bilibili.com/video/av45584656 码家学院的视频

这次是记录ElasticSearch6 使用DSL语句去查询数据


目录

1.什么是DSL语言

2.使用DSL语言去查询数据

1.根据某个字段去精确查找

2.使用模糊查询

3.使用过滤器


1.什么是DSL语言

es中的查询请求有两种方式,一种是简易版的查询,另外一种是使用JSON完整的请求体,叫做结构化查询(DSL)。
由于DSL查询更为直观也更为简易,所以大都使用这种方式。
DSL查询是POST过去一个json,由于post的请求是json格式的,所以存在很多灵活性,也有很多形式。

2.使用DSL语言去查询数据

1.根据某个字段去精确查找

  1. POST /yizhigou/dog/_search
  2. {
  3. "query":{
  4. "term":{
  5. "type":"value" #字段 和要查询的 数值
  6. }
  7. }
  8. }

比如我这根据名称查找

  1. POST /yizhigou/dog/_search
  2. {
  3. "query":{
  4. "term":{
  5. "name":"guoergou"
  6. }
  7. }
  8. }

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI4MTk4MTgx_size_16_color_FFFFFF_t_70

可以看到查询出来:

20190812161617975.png

2.使用模糊查询

和精准查询差不多 只不过换了个查询的语句

  1. POST /yizhigou/guoergou/_search
  2. {
  3. "query":{
  4. "match":{
  5. "type":"value"
  6. }
  7. }
  8. }

比如我模糊查询兰博基尼的

我先创建了一个 兰博基尼大牛和一个兰博基尼小牛

然后使用模糊查询 兰博基尼

  1. {
  2. "query":{
  3. "match":{
  4. "name":"兰博基尼"
  5. }
  6. }
  7. }

可以看到两个都可以查出来

20190812163522397.png

注意:

Term查询不会对字段进行分词查询,会采用精确匹配。

Match会根据该字段的分词器,进行分词查询。

所以这和前面使用简单查询到时候没有使用名字查询的原因

3.使用过滤器

filter过滤 可以来过滤一些条件 比如过滤掉参数不需要的 比如如下的 过滤器后面是范围

过滤出来年纪在44 - 88的

  1. {
  2. "query": {
  3. "bool":{
  4. "filter":{
  5. "range":{
  6. "age":{
  7. "gt":44,
  8. "lte":88
  9. }
  10. }
  11. }
  12. }
  13. }
  14. }

可以看到有这么多

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI4MTk4MTgx_size_16_color_FFFFFF_t_70 1

记录以上 视频上就介绍了这么一些 常用的

发表评论

表情:
评论列表 (有 0 条评论,552人围观)

还没有评论,来说两句吧...

相关阅读