前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ElasticSearch 权威指南笔记

ElasticSearch 权威指南笔记

作者头像
operator开发工程师
发布2023-11-16 20:26:35
1830
发布2023-11-16 20:26:35
举报
文章被收录于专栏:云原生民工云原生民工

入门

简单搜索

检查 ES 集群状态

1

curl 'http://localhost:9200/?pretty'

关系型数据库和ES字段的对应关系

1 2

Relational DB -> Databases -> Tables -> Rows -> Columns Elasticsearch -> Indices -> Types -> Documents -> Fields

插入一条数据

1 2 3 4 5 6 7

PUT /megacorp/employee/1 { "first_name" : "John", "last_name" : "Smith", "age" : 25, "about" : "I love to go rock climbing", "interests": [ "sports", "music" ] }

查询文档

1

GET /megacorp/employee/1

搜索全部员工

1

GET /megacorp/employee/_search

搜索姓氏中包含**“Smith”**的员工

1

GET /megacorp/employee/_search?q=last_name:Smith

使用 DSL(Domain Specific Language)特定领域语言**)**查询

1 2 3 4 5 6 7 8

GET /megacorp/employee/_search { "query": { "match": { "last_name": "Smith" } } }

找到姓氏为“Smith”的员工,但是我们只想得到年龄大于30岁的

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

GET /megacorp/employee/_search { "query": { "filtered": { "filter": { "range": { "age": { "gt": 30 } } }, "query": { "match": { "last_name": "smith" } } } } }

全文搜索

搜索所有喜欢**“rock climbing”**的员工

1 2 3 4 5 6 7 8

GET /megacorp/employee/_search { "query" : { "match" : { "about" : "rock climbing" } } }

短语搜索

要查询同时包含"rock"和"climbing"(并且是相邻的)的员工记录

1 2 3 4 5 6 7 8

GET /megacorp/employee/_search { "query" : { "match_phrase" : { "about" : "rock climbing" } } }

高亮我们的搜索

1 2 3 4 5 6 7 8 9 10 11 12 13

GET /megacorp/employee/_search { "query": { "match_phrase": { "about": "rock climbing" } }, "highlight": { "fields": { "about": {} } } }

分析

到所有职员中最大的共同点(兴趣爱好)是什么

1 2 3 4 5 6 7 8

GET /megacorp/employee/_search { "aggs": { "all_interests": { "terms": { "field": "interests" } } } }

所有姓"Smith"的人最大的共同点(兴趣爱好)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

GET /megacorp/employee/_search { "query": { "match": { "last_name": "smith" } }, "aggs": { "all_interests": { "terms": { "field": "interests" } } } }

统计每种兴趣下职员的平均年龄

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

GET /megacorp/employee/_search { "aggs": { "all_interests": { "terms": { "field": "interests" }, "aggs": { "avg_age": { "avg": { "field": "age" } } } } } }

查看集群健康状态

1

GET /_cluster/health

索引

索引一个文档

使用自己的ID

1 2 3 4 5

PUT /{index}/{type}/{id} { "field": "value", ... }

自增ID

1 2 3 4 5 6

POST /website/blog/ { "title": "My second blog entry", "text": "Still trying this out...", "date": "2014/01/01" }

检索文档

1

GET /website/blog/123?pretty

pretty 在任意的查询字符串中增加 pretty 参数,类似于上面的例子。会让Elasticsearch美化输出**(pretty-print)** JSON 响应以 便更加容易阅读。 _source 字段不会被美化,它的样子与我们输入的一致。

检索文档的一部分

1

GET /website/blog/123?_source=title,text

你只想得到 _source 字段而不要其他的元数据

1

GET /website/blog/123/_source

更新整个文档

1 2 3 4 5 6

PUT /website/blog/123 { "title": "My first blog entry", "text": "I am starting to get the hang of this...", "date": "2014/01/02" }

创建一个新文档

1 2

POST /website/blog/ { ... }

不重复插入

1 2

PUT /website/blog/123?op_type=create { ... }

1 2

PUT /website/blog/123/_create { ... }

删除文档

1

DELETE /website/blog/123

文档局部更新

添加一个 tags 字段和一个 views 字段:

1 2 3 4 5 6 7

POST /website/blog/1/_update { "doc" : { "tags" : [ "testing" ], "views": 0 } }

检索多个文档

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

GET /_mget { "docs": [ { "_index": "website", "_type": "blog", "_id": 2 }, { "_index": "website", "_type": "pageviews", "_id": 1, "_source": "views" } ] }

如果你想检索的文档在同一个 _index 中(甚至在同一个 _type 中),你就可以在URL中定义一个默认的 _index 或

者 / index/ type 。

1 2 3 4 5 6 7

GET /website/blog/_mget { "docs" : [ { "_id" : 2 }, { "_type" : "pageviews", "_id" : 1 } ] }

如果所有文档具有相同 _index 和 _type

1 2 3 4

GET /website/blog/_mget { "ids" : [ "2", "1" ] }

bulk API

1 2 3 4 5

{ action: { metadata }}\n { request body }\n { action: { metadata }}\n { request body }\n ...

搜索

空搜索

1

GET /_search

https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20231006083735036.png
https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20231006083735036.png

查询所有类型为 tweet 并在 tweet 字段中包含 elasticsearch 字符的文档

1

GET /_all/tweet/_search?q=tweet:elasticsearch

返回包含 “mary” 字符的所有文档的简单搜索

1

GET /_search?q=mary

用户的名字是“Mary”

“Mary”发的六个推文

针对“@mary”的一个推文

https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20231006084627477.png
https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20231006084627477.png

映射及分析

查看 mapping

1

GET /gb/_mapping/tweet

https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20231006090147087.png
https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20231006090147087.png
https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20231006090208053.png
https://zhuyaguang-1308110266.cos.ap-shanghai.myqcloud.com/img/image-20231006090208053.png

结构化查询 Query DSL

匹配所有的文档

1 2 3 4 5 6

GET /_search { "query": { "match_all": {} } }

使用 match 查询子句用来找寻在 tweet 字段中找寻包含 elasticsearch 的成员

1 2 3 4 5

{ "match": { "tweet": "elasticsearch" } }

自定义分析器

1 2 3 4 5 6 7 8 9 10 11

PUT /my_index { "settings": { "analysis": { "char_filter": { ... custom character filters ... }, "tokenizer": { ... custom tokenizers ... }, "filter": { ... custom token filters ... }, "analyzer": { ... custom analyzers ... } } } }

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-10-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 入门
    • 简单搜索
      • 全文搜索
        • 短语搜索
      • 分析
        • 索引一个文档
        • 检索文档
        • 更新整个文档
        • 创建一个新文档
        • 删除文档
        • 文档局部更新
        • 检索多个文档
        • bulk API
    • 索引
    • 搜索
    • 映射及分析
    • 结构化查询 Query DSL
    • 自定义分析器
    相关产品与服务
    Elasticsearch Service
    腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档