博客
关于我
ElasticSearch Restful各种常用操作示范代码
阅读量:113 次
发布时间:2019-02-26

本文共 2459 字,大约阅读时间需要 8 分钟。

Elasticsearch 7.x安装教程:非本地可访问配置

Elasticsearch(简称ES)是一种基于分布式的搜索引擎,能够对结构化数据进行高效的存储和检索。与传统数据库(如MySQL、PostgreSQL等)相比,ES具有更高的灵活性和扩展性。以下将从基本结构、数据存储对比以及操作方式等方面详细阐述ES的特点,并结合实际案例说明增删改查操作过程。

基本结构:传统数据库与ES对比

以下是传统数据库和Elasticsearch之间的主要对比:

传统数据库 Elasticsearch
数据库 index
type
字段 id
记录 文档

数据存储对比

传统数据库存储以行为单位,而Elasticsearch则以文档为单位存储数据:

传统数据库 Elasticsearch
varchar字符串、int整数等类型的字段组成的一行行记录 JSON格式的文档

操作方式

传统数据库主要通过SQL语句进行操作,而Elasticsearch则采用基于RESTful风格的域名式语言(DSL)。以下是两者的对比:

传统数据库 Elasticsearch
SQL语句 Restful风格的DSL

基操:增删改查

以下将通过一个学校的实际案例,说明如何在Elasticsearch中进行增删改查操作。

添加数据

添加一条新数据记录,可以通过以下方式实现:

POST http://[IP地址]:9200/[index名]/[type名]/[documentID]

例如,添加一班的小红(直接带id式插入):

POST http://[IP地址]:9200/school/class_1/xiaohong{  "name": "小红",  "age": 18,  "height": 165,  "tags": ["学习认真", "学霸", "漂亮"]}

如果不带id,系统会自动生成一个唯一的id。

添加的小白用于后续删除:

POST http://[IP地址]:9200/school/class_1/xiaobai{  "name": "小白",  "age": 18,  "height": 165}

删除数据

删除一条数据记录可以通过以下方式实现:

DELETE http://[IP地址]:9200/school/class_1/xiaobai

删除成功后,可以从结果中查看到记录已被删除。

修改数据

修改数据可以分为两种情况:

1. 全部修改:通过PUT请求替换整个文档:

PUT http://[IP地址]:9200/school/class_1/xiaohong{  "name": "小红",  "age": 19,  "height": 170,  "tags": ["学习认真", "学霸", "漂亮"]}

2. 部分修改:通过POST请求更新特定字段:

POST http://[IP地址]:9200/school/class_1/xiaohong/_update{  "doc": {    "age": 20  }}

查询数据

查询所有数据可以通过以下方式实现:

GET http://[IP地址]:9200/school/class_1/_search

查询结果如下:

{  "hits": [    {      "_source": {        "name": "小红",        "age": 20,        "height": 170,        "tags": ["学习认真", "学霸", "漂亮"]      }    },    {      "_source": {        "name": "无名",        "age": 17,        "height": 175,        "tags": ["学习认真", "学霸"]      }    },    {      "_source": {        "name": "小李",        "age": 22,        "height": 176,        "tags": ["调皮", "学渣"]      }    }  ]}

查询年龄在18及以上的同学可以使用以下查询:

POST http://[IP地址]:9200/school/class_1/_search{  "query": {    "bool": {      "filter": [        {          "range": {            "age": {              "gte": 18            }          }        }      ]    }  },  "size": 10}

查询优化

Elasticsearch提供了丰富的查询和聚合功能,可以通过合理的查询策略提高搜索效率。常用的查询包括:

1. 匹配某字段等于某个值:

{  "term": {    "name": "小红"  }}

2. 匹配某字段多个值:

{  "terms": ["小红", "小白"]}

3. 范围筛选:

{  "range": {    "age": {      "gte": 18    }  }}

4. 时间范围筛选:

{  "range": {    "finished_time": {      "gt": "now-1d"    }  }}

5. 时间聚合分桶:

{  "aggs": {    "my_date_buckets": {      "date_histogram": {        "field": "finished_time",        "fixed_interval": "10m"      }    }  }}

通过上述方法,可以对数据进行精确的查询和高效的聚合分析。

转载地址:http://yfiu.baihongyu.com/

你可能感兴趣的文章
python语言:装饰器原理
查看>>
Python 交互式数据可视化详解
查看>>
python语言有哪些优点和缺点_Python有哪些优缺点,你了解吗?
查看>>
Python 从入门到精通:30天速成教程到底有多狠?你能坚持下来吗?
查看>>
Python 从数据库中存储和检索密码的最安全方法
查看>>
Python语言及其应用 - 知识点遍历
查看>>
Python 优化提速的 8 个小技巧
查看>>
Python 余弦相似度与皮尔逊相关系数 计算
查看>>
python 使用execjs 报编码错误解决办法,UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xac in position 145: il
查看>>
python 使用filetype校验文件
查看>>
Python 使用flush函数将缓冲区数据立即写磁盘
查看>>
python 使用in判断不准确,in不好使
查看>>
Python 使用pandas 进行查询和统计详解
查看>>
Redis 配置文件redis.conf详细解释
查看>>
python网络爬虫(2)——scrapy框架的基础使用
查看>>
python网络爬虫实例教程试读_Python网络爬虫实战教程(全套完整版) - 学途无忧网 - 做技术的王者 - Powered By EduSoho...
查看>>
Python 使用哈希函数用于加密
查看>>
Python 依赖管理的革新——Poetry 深度解析
查看>>
python 保留精度及增加去除数字的千位分隔符(金额化数字)
查看>>
python 倒计时 9,8,7,。。。。。。0
查看>>