当前位置:首页 > 科技  > 软件

巧记Elasticsearch常用DSL语法

来源: 责编: 时间:2023-10-29 21:45:59 417观看
导读记知识先记轮廓,关于DSL语法的轮廓,记住以下三句话即可:索引、文档和查询Match、Term和Bool还有翻页和聚合一、又爱又恨的DSL使用Elasticsearch时,我们一般是调用RestClient API的方式读取和写入集群数据。有时也会使用工

记知识先记轮廓,关于DSL语法的轮廓,记住以下三句话即可:eTp28资讯网——每日最新资讯28at.com

  • 索引、文档和查询
  • Match、Term和Bool
  • 还有翻页和聚合

eTp28资讯网——每日最新资讯28at.com

一、又爱又恨的DSL

使用Elasticsearch时,我们一般是调用RestClient API的方式读取和写入集群数据。有时也会使用工具查阅和操作数据,比如:使用Chrome插件Multi Elasticsearch Head或者Cerebro、Kibana。笔者建议使用Kibana的方式操作集群数据,使用Multi Elasticsearch Head或者Cerebro从整体上观察集群。eTp28资讯网——每日最新资讯28at.com

既然是操作集群数据,那就绕不开ES的DSL语法 — 一个让人又爱又恨的语法。eTp28资讯网——每日最新资讯28at.com

  • 爱:Http Restful风格设计的,使用上简单,随手撸起一个工具都支持Http访问。
  • 恨:语法太难记,语法格式在设计上有点反人类,真不知道设计者们是怎么想的。不过你觉得有更好的方案吗?

本文整理了一些常用DSL语法,方便记忆,分了如下几类:操作索引、操作文档、Match查询、Term查询、查看分词。如果碰到复杂查询还是建议查阅官网。eTp28资讯网——每日最新资讯28at.com

二、操作数据

在Kibana上操作ES数据的方式如下:eTp28资讯网——每日最新资讯28at.com

eTp28资讯网——每日最新资讯28at.com

1.操作索引

(1) 创建索引:eTp28资讯网——每日最新资讯28at.com

PUT /goods{  "mappings": {    "properties": {      "brandName": {        "type": "keyword"      },      "categoryName": {        "type": "keyword"      },      "createTime": {        "type": "date",        "format": "yyyy-MM-dd HH:mm:ss"      },      "id": {        "type": "keyword"      },      "price": {        "type": "double"      },      "saleNum": {        "type": "integer"      },      "status": {        "type": "integer"      },      "stock": {        "type": "integer"      },      "title": {        "type": "text",        "analyzer": "ik_max_word",        "search_analyzer": "ik_smart"      }    }  },  # 根据情况选择是否要修改  "settings": {    "number_of_shards": 2,    "number_of_replicas": 2  }}

(2) 删除索引:eTp28资讯网——每日最新资讯28at.com

DELETE goods

(3) 重建索引eTp28资讯网——每日最新资讯28at.com

有些场景下需要重建索引,比如修改了Mapping,重建步骤如下:eTp28资讯网——每日最新资讯28at.com

POST _reindex                    {  "source": {    "index": "goods"  },  "dest": {    "index": "goods1"  }}DELETE goodsPOST _reindex                    {  "source": {    "index": "goods1"  },  "dest": {    "index": "goods"  }}DELETE goods1

2.操作文档

(1) 创建文档eTp28资讯网——每日最新资讯28at.com

# 这种方式,同样的id无法重新创建PUT goods/_create/1{  "id": 1,  "brandName": "Apple",  "categoryName": "手机",  "createTime": "2023-10-22 19:12:56",  "price": 8799,  "saleNum": 599,  "status": 0,  "stock": 1000,  "title": "Apple iPhone 15 Pro 512GB 远峰蓝色 支持移动联通电信5G 双卡双待手机"}# 这种方式,同样的id会覆盖原有的PUT goods/_doc/2{  "id": 2,  "brandName": "Apple",  "categoryName": "手机",  "createTime": "2023-10-22 19:12:56",  "price": 8799,  "saleNum": 599,  "status": 0,  "stock": 1000,  "title": "Apple iPhone 15 Pro 256GB 远峰蓝色 支持移动联通电信5G 双卡双待手机"}

(2) 更新文档eTp28资讯网——每日最新资讯28at.com

POST goods/_update/1{  "doc": {    "title":"Apple iPhone 13 Pro (A2639) 256GB 远峰蓝色 支持移动联通电信5G 双卡双待手机111"  }}

(3) 删除文档eTp28资讯网——每日最新资讯28at.com

DELETE goods/_doc/2

(4) 获取文档eTp28资讯网——每日最新资讯28at.com

# 获取单个文档GET goods/_doc/1# 批量获取GET books/_doc/_mget{  "ids": ["1","2"]}

2.Match查询

Match查询会对查询内容做分词,然后根据倒排索引去匹配文档。Term查询对查询内容不做分词,直接去倒排索引里去匹配文档。eTp28资讯网——每日最新资讯28at.com

(1) 查询所有eTp28资讯网——每日最新资讯28at.com

POST goods/_search{  "query": {    "match_all": {          }  }}

(2) match_phrase短语查询eTp28资讯网——每日最新资讯28at.com

POST goods/_search{  "query": {    "match_phrase": {      "title": "支持"    }  }}

(3) 匹配查询eTp28资讯网——每日最新资讯28at.com

POST goods/_search{  "query": {    "match": {      "title": "移动多余"    }  }}

(4) 模糊匹配查询eTp28资讯网——每日最新资讯28at.com

POST goods/_search{  "query": {    "wildcard": {      "title": {        "value": "*鞋"      }    }  }}

4.Term查询

Term查询对查询内容不做分词,直接去倒排索引里去匹配文档。eTp28资讯网——每日最新资讯28at.com

POST goods/_search{  "query": {    "term": {      "title": {        "value": "手机"      }    }  }}# 匹配多个termPOST goods/_search{  "query": {    "terms": {      "title": [        "双卡",        "待"      ]    }  }}

5.组合查询

复杂查询基本会用到bool关键字。eTp28资讯网——每日最新资讯28at.com

(1) bool + musteTp28资讯网——每日最新资讯28at.com

# 布尔查询,可以组合多个过滤语句来过滤文档POST goods/_search{  "query": {    "bool": {      "must": [        {          "term": {            "title": {              "value": "Wolfgang Mauerer"            }          }        },        {          "term": {            "date": {              "value": "2010-06-01"            }          }        }      ]    }  }}# 匹配多个字段GET product/_search{  "query": {    "bool": {      "must": [        { "match_phrase": { "name": "连衣裙" } },        { "match_phrase": { "en_intro": "korean" } },        { "match_phrase": { "intro": "御姐" } }      ]    }  }}

(2) bool + filter + rangeeTp28资讯网——每日最新资讯28at.com

POST books/_search{  "query": {    "bool": {      "must": [        {          "term": {            "author": {              "value": "Wolfgang Mauerer"            }          }        }      ],      "filter": [        {          "term": {            "date": {              "value": "2010-06-01"            }          }        }      ]    }  }}POST goods/_search{  "query": {    "bool": {      "must": [        {          "match": {            "title": "华为"          }        }      ],      "filter": [        {          "range": {            "price": {              "gte": 5000,              "lte": 10000            }          }        }      ]    }  }}

6.翻页查询

(1) Scroll分页eTp28资讯网——每日最新资讯28at.com

# 第一次使用 scroll APIPOST goods/_search?scroll=2m{  "query": {    "match_all": {}  },  "size": 2}# 进行翻页POST /_search/scroll                                                    {  "scroll" : "2m",     "scroll_id" : "FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ5QW5kRmV0Y2gBFkxBWkYwOGw2U1dPSF94aHZTelFkaWcAAAAAAAADHhZoU05ERFl3WFIycXM3M3JKMmRQVkJB" }

(2) from + size分页eTp28资讯网——每日最新资讯28at.com

POST goods/_search{  "query": {    "match_all": {        }  },  "from": 6,  "size": 2,  "sort": [    {      "price": {        "order": "asc"      }    }  ]}

7.聚合查询

(1) 最大、最小、平均eTp28资讯网——每日最新资讯28at.com

POST goods/_search{  "aggs": {    "avg_price": {      "avg": {        "field": "price"      }    }  }}POST goods/_search{  "aggs": {    "min_price": {      "min": {        "field": "price"      }    }  }}POST goods/_search{  "aggs": {    "max_price": {      "max": {        "field": "price"      }    }  }}

(2) 范围查询eTp28资讯网——每日最新资讯28at.com

POST goods/_search{  "query": {    "range": {      "price": {        "gte": 10,        "lte": 20      }    }  }}

(3) 高亮查询eTp28资讯网——每日最新资讯28at.com

POST goods/_search{  "query": {    "match": {      "title": "跑鞋"    }  },  "highlight": {    "fields": {      "body": {        "pre_tags": [          "<font color='red'>"        ],        "post_tags": [          "</font>"        ]      },      "title": {}    }  }}

(4) 分组查询eTp28资讯网——每日最新资讯28at.com

POST goods/_search{  "aggs": {    "brandNameName": {      "terms": {        "field": "brandName"      }    }  }}

(5) 子查询eTp28资讯网——每日最新资讯28at.com

POST goods/_search{  "aggs": {    "brandNameName": {      "terms": {        "field": "brandName"      },      "aggs": {        "avgPrice": {          "avg": {            "field": "price"          }        }      }    }  }}

8.分析分词

相对一些分析进行分析时,看看ES怎么拆分的,可以用这个查看。eTp28资讯网——每日最新资讯28at.com

POST _analyze{  "analyzer": "standard",  "text": "Linus 在90年代开发出了linux操作系统"}POST _analyze{      "analyzer": "ik_max_word",    "text": "Linus 在90年代开发出了linux操作系统"  }POST _analyze{      "analyzer": "ik_smart",    "text": "Linus 在90年代开发出了linux操作系统"  }POST _analyze{      "analyzer": "ik_smart",    "text": "中华人民共和国国歌"  }POST _analyze{      "analyzer": "ik_max_word",    "text": "中华人民共和国国歌"  }

三、总结

本文主要介绍了常见DSL的用法,主要是帮助记忆,避免一些基本的操作还要去查询文档的尴尬。记住以下3句话,即可记住DSL的轮廓了:eTp28资讯网——每日最新资讯28at.com

  • 索引、文档和查询
  • Match、Term和Bool
  • 还有翻页和聚合

本文链接:http://www.28at.com/showinfo-26-15616-0.html巧记Elasticsearch常用DSL语法

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 用示例和应用程序了解必要的Golang库

下一篇: 面试挑战:解密百度产品经理面试题——为什么牛奶盒是方的,而可乐罐是圆的?

标签:
  • 热门焦点
  • 之家push系统迭代之路

    前言在这个信息爆炸的互联网时代,能够及时准确获取信息是当今社会要解决的关键问题之一。随着之家用户体量和内容规模的不断增大,传统的靠"主动拉"获取信息的方式已不能满足用
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 讲故事上个月我写过一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,当时用的是 GDIView + WinDbg 把问题搞定,前者用来定位泄露资源,后者用来定位泄露代码,后面有朋友反
  • 小红书1周涨粉49W+,我总结了小白可以用的N条涨粉笔记

    作者:黄河懂运营一条性教育视频,被54万人&ldquo;珍藏&rdquo;是什么体验?最近,情感博主@公主是用鲜花做的,火了!仅仅凭借一条视频,光小红书就有超过128万人,为她疯狂点赞!更疯狂的是,这
  • 本地生活这块肥肉,拼多多也想吃一口

    出品/壹览商业 作者/李彦编辑/木鱼拼多多也看上本地生活这块蛋糕了。近期,拼多多在App首页&ldquo;充值中心&rdquo;入口上线了本机生活界面。壹览商业发现,该界面目前主要
  • 东方甄选单飞:有些鸟注定是关不住的

    文/彭宽鸿编辑/罗卿东方甄选创始人俞敏洪带队的&ldquo;7天甘肃行&rdquo;直播活动已在近日顺利收官。成立后一年多时间里,东方甄选要脱离抖音自立门户的传闻不绝于耳,&ldquo;7
  • 认真聊聊东方甄选:如何告别低垂的果实

    来源:山核桃作者:财经无忌爆火一年后,俞敏洪和他的东方甄选依旧是颇受外界关心的&ldquo;网红&rdquo;。7月5日至9日,为期5天的东方甄选&ldquo;甘肃行&rdquo;首次在自有App内直播,
  • 机构称Q2全球智能手机出货量同比下滑11% 苹果份额依旧第2

    7月20日消息,据外媒报道,研究机构的报告显示,由于需求下滑,今年二季度全球智能手机的出货量,同比下滑了11%,三星、苹果等主要厂商的销量,较去年同期均有下
  • OPPO K11样张首曝:千元机影像“卷”得真不错!

    一直以来,OPPO K系列机型都保持着较为均衡的产品体验,历来都是2K价位的明星机型,去年推出的OPPO K10和OPPO K10 Pro两款机型凭借各自的出色配置,堪称有
  • 由于成本持续增加,笔记本产品价格预计将明显上涨

    根据知情人士透露,由于材料、物流等成本持续增加,笔记本产品价格预计将在2021年下半年有明显上涨。进入6月下旬以来,全球半导体芯片缺货情况加剧,显卡、处理器
Top