广告
返回顶部
首页 > 资讯 > 数据库 >增删改查 elasticsearch中的文档API 的使用
  • 590
分享到

增删改查 elasticsearch中的文档API 的使用

2024-04-02 19:04:59 590人浏览 薄情痞子
摘要

文档为何物?一个对象 就相当于mysql的一个record记录【文档】什么是文档?程序中大多的实体或对象能够被序列化为包含键值对的JSON对象,键(key)是字段(field)或属性(property)的名

文档为何物?一个对象 就相当于mysql的一个record记录


【文档】

什么是文档?


程序中大多的实体或对象能够被序列化为包含键值对的JSON对象,键(key)是字段(field)或属性(property)的名字,值(value)可以是字符串、数字、布尔类型、另一个对象、值数组或者其他特殊类型,比如表示日期的字符串或者表示地理位置的对象。

{
    "name":         "John Smith",
    "age":          42,
    "confirmed":    true,
    "join_date":    "2014-06-01",
    "home": {
        "lat":      51.5,
        "lon":      0.1
    },
    "accounts": [
        {
            "type": "facebook",
            "id":   "johnsmith"
        },
        {
            "type": "twitter",
            "id":   "johnsmith"
        }
    ]
}

通常,我们可以认为对象(object)和文档(document)是等价相通的。不过,他们还是有所差别:对象(Object)是一个jsON结构体——类似于哈希、HashMap、字典或者关联数组;对象(Object)中还可能包含其他对象(Object)。 在elasticsearch中,文档(document)这个术语有着特殊含义。它特指最顶层结构或者根对象(root object)序列化成的JSON数据(以唯一ID标识并存储于Elasticsearch中)。

文档元数据


一个文档不只有数据。它还包含了元数据(metadata)——关于文档的信息。三个必须的元数据节点是:

节点说明

_index文档存储的地方

_type文档代表的对象的类

_id文档的唯一标识

_index


索引(index)类似于关系型数据库里的“数据库”——它是我们存储和索引关联数据的地方。

提示:


事实上,我们的数据被存储和索引在分片(shards)中,索引只是一个把一个或多个分片分组在一起的逻辑空间。然而,这只是一些内部细节——我们的程序完全不用关心分片。对于我们的程序而言,文档存储在索引(index)中。剩下的细节由Elasticsearch关心既可。

我们将会在《索引管理》章节中探讨如何创建并管理索引,但现在,我们将让Elasticsearch为我们创建索引。我们唯一需要做的仅仅是选择一个索引名。这个名字必须是全部小写,不能以下划线开头,不能包含逗号。让我们使用WEBsite做为索引名。

_type


在应用中,我们使用对象表示一些“事物”,例如一个用户、一篇博客、一个评论,或者一封邮件。每个对象都属于一个类(class),这个类定义了属性或与对象关联的数据。user类的对象可能包含姓名、性别、年龄和Email地址。

在关系型数据库中,我们经常将相同类的对象存储在一个表里,因为它们有着相同的结构。同理,在Elasticsearch中,我们使用相同类型(type)的文档表示相同的“事物”,因为他们的数据结构也是相同的。+


每个类型(type)都有自己的映射(mapping)或者结构定义,就像传统数据库表中的列一样。所有类型下的文档被存储在同一个索引下,但是类型的映射(mapping)会告诉Elasticsearch不同的文档如何被索引。 我们将会在《映射》章节探讨如何定义和管理映射,但是现在我们将依赖Elasticsearch去自动处理数据结构。

_type的名字可以是大写或小写,不能包含下划线或逗号。我们将使用blog做为类型名。

_id


id仅仅是一个字符串,它与_index和_type组合时,就可以在Elasticsearch中唯一标识一个文档。当创建一个文档,你可以自定义_id,也可以让Elasticsearch帮你自动生成。

其它元数据


还有一些其它的元数据,我们将在《映射》章节探讨。使用上面提到的元素,我们已经可以在Elasticsearch中存储文档并通过ID检索——换言说,把Elasticsearch做为文档存储器使用了。

[索引]

基于Http协议,以JSON为数据交互格式的RESTful api

其他所有程序语言都可以使用RESTful API,通过9200端口的与Elasticsearch进行通信,你可以使用你喜欢的WEB客户端,事实上,如你所见,你甚至可以通过curl命令与Elasticsearch通信。

NOTE

Elasticsearch官方提供了多种程序语言的客户端——Groovy,javascript.netPHP,Perl,python,以及 Ruby——还有很多由社区提供的客户端和插件,所有这些可以在文档中找到。

向Elasticsearch发出的请求的组成部分与其它普通的HTTP请求是一样的:

curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'

  • VERB HTTP方法:GETPOSTPUTHEADDELETE

  • PROTOCOL http或者https协议(只有在Elasticsearch前面有https代理的时候可用)

  • HOST Elasticsearch集群中的任何一个节点的主机名,如果是在本地的节点,那么就叫localhost

  • PORT Elasticsearch HTTP服务所在的端口,默认为9200

  • PATH API路径(例如_count将返回集群中文档的数量),PATH可以包含多个组件,例如_cluster/stats或者_nodes/stats/JVM

  • QUERY_STRING 一些可选的查询请求参数,例如?pretty参数将使请求返回更加美观易读的JSON数据

  • BODY 一个JSON格式的请求主体(如果请求需要的话)

举例说明,为了计算集群中的文档数量,我们可以这样做:

curl -XGET 'http://localhost:9200/_count?pretty' -d '
{
    "query": {
        "match_all": {}
    }
}
'


如:返回所有节点jvm信息

curl -i 127.0.0.1:9200/_nodes/stats/jvm?pretty


【API-RESTful API


参考:

http://www.learnes.net/data/README.html


curl 192.168.100.10:9200?preety
curl 192.168.100.10:9200/_count?pretty


shell 中的curl的用法

-X 指定请求方法默认是  -XGET

-i 返回数据的时候,也一并返回请求结果

-d 发送的数据



查看elk的状态:

curl 192.168.100.10:9200/_cluster/health?pretty



这个返回值意味着我们的索引请求已经被成功创建,其中还包含了_index, _type以及_id的元数据,以及一个新的元素_version

_index 名词就是相当于数据库中库

_type 相当于数据库中的表

_id 就是id(可以自己指定也以自增)


_index 和 _type 和 _id 三者组成elasticsearch存储中的数据的唯一


创建一条

curl -XPUT 192.168.100.10:9200/website/blog/123 -d '{
"title": "My first blog entry",
  "text":  "Just trying this out...",
  "date":  "2016/01/01"
 }'



 可以看到搜索到了当时创建的文档

[root@master ~]# curl 192.168.100.10:9200/website/blog/123?pretty 
{
  "_index" : "website",
  "_type" : "blog",
  "_id" : "123",
  "_version" : 1,
  "found" : true,
  "_source" : {
    "title" : "My first blog entry",
    "text" : "Just trying this out...",
    "date" : "2014/01/01"
  }
}

每找到的情况:

[root@master ~]# curl 192.168.100.10:9200/website/blog/1235?pretty
{
  "_index" : "website",
  "_type" : "blog",
  "_id" : "1235",
  "found" : false
}


_source 是文档的内容。可以指定值返回文档指定的字段

[root@master ~]# curl -i -XGET "192.168.100.10:9200/logstash-2016.05.12/syslog/AVSlIBy3bzztddJUaGzh?_source=file,meesage&pretty"
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 185
{
  "_index" : "logstash-2016.05.12",
  "_type" : "syslog",
  "_id" : "AVSlIBy3bzztddJUaGzh",
  "_version" : 1,
  "found" : true,
  "_source" : {
    "file" : "/var/log/messages"
  }
}



一次获取多个文档_mget

[root@master ~]# curl -i -XGET 192.168.100.10:9200/logstash-2016.05.12/syslog/_mget?pretty -d '{"ids": [ "2",  "1"]}'  
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 230
{
  "docs" : [ {
    "_index" : "logstash-2016.05.12",
    "_type" : "syslog",
    "_id" : "2",
    "found" : false
  }, {
    "_index" : "logstash-2016.05.12",
    "_type" : "syslog",
    "_id" : "1",
    "found" : false
  } ]
}



索引多了会积累需要定时删除比如删除一个月之前的,(不能使用rm -rf 删除data下面的索引目录,因为elk是分布式的你输出了,其他节点的复制分片又会同步过来)

# 删除indices


curl -XDELETE "http://localhost:9200/access-log-2016.12.02/"


# 删除多个indices

curl -XDELETE "http://localhost:9200/access-log-2015.12.*/"


您可能感兴趣的文档:

--结束END--

本文标题: 增删改查 elasticsearch中的文档API 的使用

本文链接: https://www.lsjlt.com/news/40636.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 增删改查 elasticsearch中的文档API 的使用
    文档为何物?一个对象 就相当于mysql的一个record记录【文档】什么是文档?程序中大多的实体或对象能够被序列化为包含键值对的JSON对象,键(key)是字段(field)或属性(property)的名...
    99+
    2022-10-18
  • ElasticSearch 文档的增删改查都不会?
    本文主要是介绍 ElasticSearch 的文档增删改查和批量操作,同时会介绍一些 REST API 返回状态码的具体含义。 我们先来看下这个表: 这个表包含了 Index、Create、Read、Update、Delete ...
    99+
    2020-09-15
    ElasticSearch 文档的增删改查都不会?
  • Elasticsearch文档索引的增删改查方法
    这篇文章主要介绍“Elasticsearch文档索引的增删改查方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Elasticsearch文档索引的增删改查方法”文章能帮助大家解决问题。接口幂等性0...
    99+
    2023-06-30
  • Elasticsearch文档索引基本操作增删改查示例
    接口幂等性 接口幂等性:数学概念,多次请求,相当于一次请求get,put,delete都是幂等性的接口post 存在幂等性的问题前端速度很快,点了两次,会生成两个订单用户在...
    99+
    2022-11-10
  • .Net Api 中使用Elasticsearch存储文档的方法
    目录什么是Elasticsearch用Nest使用Es数据库配置Nest操作数据库新增什么是Elasticsearch Elasticsearch 是一个分布式、高扩展、高实时的搜索...
    99+
    2022-11-13
  • .Net Api中怎么使用Elasticsearch存储文档
    这篇文章主要介绍“.Net Api中怎么使用Elasticsearch存储文档”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“.Net Api中怎么使用Elasticsearch存...
    99+
    2023-06-29
  • php对json文件的增删改查
    随着互联网的发展,数据的交互越来越频繁,其中JSON(JavaScript Object Notation)成为大家喜爱的数据传输格式之一。因此,处理JSON数据变得越来越重要。本文将介绍使用PHP处理JSON文件的增、删、改、查操作。JS...
    99+
    2023-05-24
  • MySQL中的 增 删 查 改(CRUD)
    目录 新增 insert into 表名 value(数据,数据),.......; insert into 表名(列1,列2.....) value(数据,数据),.......; datatime 类型的数据如何插入? 查询 selec...
    99+
    2023-10-07
    mysql 数据库
  • MYSQL语句中的增删改查
    select * from testTable1; 查询表中的全部数据 INSERT INTO testTable1(username,password) VALUES("admin","admin"); 在te...
    99+
    2018-10-10
    MYSQL语句中的增删改查
  • [PYTHON]简单的文件增删改查处理
    快一个月木有更新了,在这段时间内,博主除了忙工作外,就一直在研究python编程,据圈内朋友闲聊,python应该是未来一个运维攻城狮除了shell以外必备的LINUX脚本语言,所以就硬着头皮,按照老男孩的python视频讲座,把自己的研...
    99+
    2023-01-31
    简单 文件 PYTHON
  • C#中XML文件内容增删改查的方法
    本篇内容介绍了“C#中XML文件内容增删改查的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是XMLXML是一种可扩展标记语言(EX...
    99+
    2023-06-29
  • PyMySQL实现增删查改的简单使用
    我们在使用MySQL的时候,可以在MySQL的客户终端来操作数据库中的表,同时,也可以使用navicat等可视化的工具来操作数据表。但是,这只是操作个别数据,如果我们想要插入10万条...
    99+
    2022-11-12
  • SQL语句增删改查的用法
    这篇文章主要讲解了“SQL语句增删改查的用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL语句增删改查的用法”吧! 关键字: sql语句(增...
    99+
    2022-10-18
  • Linux用户的增、删、改、查方法
    这篇文章主要介绍“Linux用户的增、删、改、查方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux用户的增、删、改、查方法”文章能帮助大家解决问题。Linux系统是一个多用户多任务的分时操...
    99+
    2023-06-28
  • python3配置文件的增删改查,记录一
    1 #!/usr/bin/env python3 2 3 import json #json模块,用于将像字典的字符串转换为字典 4 import re #re模块,...
    99+
    2023-01-31
    配置文件
  • postgresql使用dblink跨库增删改查的步骤
    目录PostgreSQL使用dblink跨库增删改查一、使用步骤1、创建dblink扩展,连接与被连接的两个数据库都要执行下面sql2、跨库查询或增删改3、如果不想每一次都写完整的dblink连接信息,可以先起别名4、补...
    99+
    2023-04-01
    postgresql跨库增删改查 postgresql dblink跨库 postgresql跨库
  • 详解Python中字典的增删改查
    目录Python中的字典一、字典的特点二、创建字典三、查询字典数据四、Key的判断五、Key的删除六、Key的添加七、Key的修改八、字典的视图keys()values()iterm...
    99+
    2022-11-12
  • python中列表的常用操作增删改查
    1. 列表的概念,列表是一种存储大量数据的存储模型。 2. 列表的特点,列表具有索引的概念,可以通过索引操作列表中的数据。列表中的数据可以进行添加、删除、修改、查询等操作。 3. 列表的基本语法 创建列表:变量名 = [数据1,数据2,…...
    99+
    2023-01-30
    常用 操作 列表
  • 【MySQL】一文带你了解表的增删改查 CRUD
    文章目录 1. 增加(Create)1.1 单行插入 + 全列插入1.2 多行插入 + 指定列插入 2. 查询(Retrieve)2.1 全列查询2.2 指定列查询2.3 查询字段为表达式2.4 别名2.5 去重2.6 排序 ...
    99+
    2023-08-16
    mysql 数据库 数据结构
  • JavaScript节点的增删改查方法怎么使用
    本篇内容主要讲解“JavaScript节点的增删改查方法怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript节点的增删改查方法怎么使用”吧!节点的增删改查节点的创建docu...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作