通过HTTP RESTful API 操作elasticsearch索引

在elasticsearch中,一个文档属于一种类型,而索引中包含各种类型。
可以粗糙简单的用关系型数据对比下:

Relational DB ⇒ Databases ⇒ Tables ⇒ Rows ⇒ Columns 

Elasticsearch ⇒ Indices ⇒ Types ⇒ Documents ⇒ Fields

一个elasticsearch集群中可以包含很多索引(数据库),索引中包含各种类型(表),而这些类型中包含各种文档(行),每个文档又包含各种字段(列)


创建索引:

curl -XPUT 'localhost:9200/customer?pretty'

{
  "acknowledged" : true
}

列出所有索引:

curl 'localhost:9200/_cat/indices?v'

结果:

health status index              pri rep docs.count docs.deleted store.size pri.store.size 
yellow open   .marvel-2015.09.29   1   1      29143            0     47.2mb         47.2mb 
yellow open   .marvel-2015.09.28   1   1      27639            0     43.8mb         43.8mb 
yellow open   customer             5   1          0            0       575b           575b 
yellow open   .marvel-kibana       1   1          2            0     18.7kb         18.7kb 

customer索引 有5个主分区,1个副本(默认就一个副本),0个文档。
customer索引 健康状态是“黄色”,这意味着没有分配多个副本,这种情况发生在创建索引使用一个副本。目前我们就运行在一个节点上,不能分配多个副本,但当其他节点加入该集群后,就可以在新加入的节点中有新的副本,此刻健康状态变成“绿色”


添加文档(document):
JSON document: { “name”: “John Doe” }

curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '
{
  "name": "John Doe"
}'

结果:
{
  "_index" : "customer",
  "_type" : "external",
  "_id" : "1",
  "_version" : 1,
  "created" : true
}

检索文档:

curl -XGET 'localhost:9200/customer/external/1?pretty'
结果:
{
  "_index" : "customer",
  "_type" : "external",
  "_id" : "1",
  "_version" : 1,
  "found" : true,
  "_source":
{
  "name": "John Doe"
}
}

_source:返回完整的JSON内容


删除索引:

curl -XDELETE 'localhost:9200/customer?pretty'
{
  "acknowledged" : true
}

总结:

curl -X<REST Verb> <Node>:<Port>/<Index>/<Type>/<ID>

REST Verb:PUT,GET,DELETE等
Index:相当于关系型数据库中的”数据库”
Type:相当于关系型数据库中的”表”
ID:相当于关系型数据库中的”行”


尊重原创,拒绝转载
http://blog.csdn.net/stark_summer/article/details/48813455

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您的问题有点多,我会依次回答: (1)OpenStack Swift 是一种分布式对象存储系统,可以存储和检索大量非结构化数据,如图片、视频和文本文件等。它由多个组成部分组成,包括代理服务器、存储节点、认证服务器和管理服务器等。代理服务器接收来自客户端的请求,并将其转发到存储节点,存储节点则负责实际的数据存储和检索。认证服务器用于身份认证,而管理服务器则用于管理和监控整个系统。 (2)要在 Docker 中部署 Elastic Search,您需要使用 Docker Compose 文件来定义 Elastic Search 服务。在 Compose 文件中,您可以指定 Elastic Search 的版本、端口号、volumes 等配置信息。然后,使用 Docker Compose 命令来启动 Elastic Search 服务即可。以下是一个示例 Compose 文件: ``` version: '2' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.9.3 container_name: elasticsearch environment: - discovery.type=single-node ports: - 9200:9200 - 9300:9300 volumes: - esdata:/usr/share/elasticsearch/data volumes: esdata: ``` (3)Elastic Search 是一个分布式的开源搜索和分析引擎,可以快速、准确地搜索和分析大量非结构化数据。它支持全文搜索、实时搜索、复杂的聚合查询等功能,可以用于构建各种类型的应用程序,如电子商务网站、社交媒体平台、日志分析工具等。 (4)要使用 RESTful API 操作 Elastic Search,您需要首先了解 Elastic Search 的索引和文档的概念。索引是一组具有相似特征的文档的集合,而文档则是存储在索引中的单个记录。然后,您可以使用 RESTful API 发送 HTTP 请求来执行各种操作,如创建索引、添加文档、更新文档、删除文档等。以下是一个示例请求: ``` PUT /my_index { "settings": { "number_of_shards": 1, "number_of_replicas": 0 } } ``` (5)如果您使用 Java 开发应用程序,并且想使用 Elastic Search 进行数据存储和检索,可以使用 Java API。使用 Java API,您可以轻松地进行索引和文档操作,如创建索引、添加文档、更新文档、删除文档等。以下是一个示例代码片段: ``` RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http"))); IndexRequest request = new IndexRequest("my_index"); request.id("1"); request.source("field1", "value1", "field2", "value2"); IndexResponse response = client.index(request, RequestOptions.DEFAULT); ``` (6)要在 Docker 中部署 Kibana,您可以使用类似的方式。您需要创建一个 Docker Compose 文件,指定 Kibana 的版本、端口号、Elastic Search 的地址等配置信息。以下是一个示例 Compose 文件: ``` version: '2' services: kibana: image: docker.elastic.co/kibana/kibana:7.9.3 container_name: kibana environment: - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 ports: - 5601:5601 ``` 然后,使用 Docker Compose 命令启动 Kibana 服务即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值