Elasticsearch Demo

索引一个文档,使用自己的ID

[email protected]:~$ curl -XPUT localhost:9200/website/blog/123 -d ‘
> {
>     "title" : "My first blog entry",
>     "text" : "Just trying this out...",
>     "date" : "2014/01/01"
> }
> ‘
{"_index":"website","_type":"blog","_id":"123","_version":1,"created":true}

索引一个文档,自增ID

[email protected]:~$ curl -XPOST localhost:9200/website/blog/ -d ‘
> {
>     "title" : "My second blog entry",
>     "text" : "Still trying this out...",
>     "date" : "2014/01/01"
> }
> ‘
{"_index":"website","_type":"blog","_id":"AU8wPJKqtV1hoSdW50dt","_version":1,"created":true}

检索文档

[email protected]:~$ curl -XGET localhost: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"
}

}
[email protected]:~$ curl -i -XGET localhost:9200/website/blog/124?pretty
HTTP/1.1 404 Not Found
Content-Type: application/json; charset=UTF-8
Content-Length: 83

{
  "_index" : "website",
  "_type" : "blog",
  "_id" : "124",
  "found" : false
}

检索文档的一部分

通常,GET 请求将返回文档的全部,存储在 _source 参数中。但是可能你感兴趣的字段只是 title 。请求个别字段可以使用 _source 参数。多个字段可以使用逗号分隔。

[email protected]:~$  curl -XGET localhost:9200/website/blog/123?_source=title,text
{"_index":"website","_type":"blog","_id":"123","_version":1,"found":true,"_source":{"text":"Just trying this out...","title":"My first blog entry"}}

或者你只想得到 _source 字段而不要其他的元数据,你可以这样请求:

[email protected]:~$ curl -XGET localhost:9200/website/blog/123/_source

{
    "title" : "My first blog entry",
    "text" : "Just trying this out...",
    "date" : "2014/01/01"
}

检查文档是否存在

如果你想做的只是检查文档是否存在——你对内容完全不感兴趣——使用 HEAD 方法来代替 GET 。HEAD 请求不会返回响应体,只有HTTP头:

[email protected]:~$ curl -i -XHEAD localhost:9200/website/blog/123
HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8
Content-Length: 0
[email protected]:~$ curl -i -XHEAD localhost:9200/website/blog/124
HTTP/1.1 404 Not Found
Content-Type: text/plain; charset=UTF-8
Content-Length: 0

更新整个文档

文档在Elasticsearch中是不可变的——我们不能修改他们。如果需要更新已存在的文档,我们可以使用 index API 重建索引(reindex) 或者替换掉它。

[email protected]:~$ curl -XPUT localhost:9200/website/blog/123 -d ‘
> {
>     "title" : "My first bolg entry",
>     "text" : "I am starting get the hang of this...",
>     "date" : "2014/01/02"
> }
> ‘
{"_index":"website","_type":"blog","_id":"123","_version":2,"created":false}

在响应中,我们可以看到Elasticsearch把 _version 增加了。
created 标识为 false 因为同索引、同类型下已经存在同ID的文档。
在内部,Elasticsearch已经标记旧文档为删除并添加了一个完整的新文档。旧版本文档不会立即消失,但你也不能去访问它。Elasticsearch会在你继续索引更多数据时清理被删除的文档。

创建一个新文档

当索引一个文档,我们如何确定是完全创建了一个新的还是覆盖了一个已经存在的呢?
_index 、_type 、_id 三者唯一确定一个文档。所以要想保证文档是新加入的,最简单的方式是使用 POST 方法让Elasticsearch自动生成唯一 _id。

然而,如果想使用自定义的 _id ,我们必须告诉Elasticsearch应该在 _index  、 _type 、_id 三者都不同时才接受请求。为了做到这点有两种方法,它们其实做的是同一件事情。

如果请求成功的创建了一个新文档,Elasticsearch将返回正常的元数据且响应状态码是 201 Created 。如果包含相同的  _index 、 _type 和 _id 的文档已经在,Elasticsearch将返回 409  Conflict 响应状态码。

[email protected]:~$ curl -XPUT localhost:9200/website/blog/123?op_type=create -d ‘{
>     "title" : "My first bolg entry",
>     "text" : "I am starting get the hang of this...",
>     "date" : "2014/01/02"
> }
> ‘
{"error":"DocumentAlreadyExistsException[[website][4] [blog][123]: document already exists]","status":409}
[email protected]:~$ curl -XPUT localhost:9200/website/blog/123/_create -d ‘
> {
>     "title" : "My first bolg entry",
>     "text" : "I am starting get the hang of this...",
>     "date" : "2014/01/02"
> }
> ‘
{"error":"DocumentAlreadyExistsException[[website][4] [blog][123]: document already exists]","status":409}
时间: 2024-08-15 08:16:46

Elasticsearch Demo的相关文章

Manage Spring Boot Logs with Elasticsearch, Logstash and Kibana

下载地址:https://www.elastic.co/downloads When time comes to deploy a new project, one often overlooked aspect is log management. ELK stack (Elasticsearch, Logstash, Kibana) is, among other things, a powerful and freely available log management solution.

Spring Boot集成ElasticSearch实现简单的增删查改接口

SpringBoot集成ElasticSearch pom.xml文件中,依赖的各jar包版本如下: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> &l

Elasticsearch 可视化管理工具

ES和Solr是2个比较常见的搜索引擎,但是Solr有控制台页面,ES就没有自带的,下面就推荐2个毕竟使用的工具. ElasticHD ElasticHD 支持 ES监控.实时搜索.Index template快捷替换修改.索引列表信息查看, SQL converts to DSL工具等.是一款非常伴的 Dashboard. 项目地址:https://github.com/360EntSecGroup-Skylar/ElasticHD docker run -p 9200:9200 -d --n

elasticsearch 简单demo RestHighLevelClient LowLeveClient

a   1 3 import java.io.File; 4 import java.io.FileReader; 5 import java.io.IOException; 6 import java.util.HashMap; 7 import java.util.List; 8 import java.util.Map; 9 import java.util.Map.Entry; 10 import java.util.Properties; 11 12 import org.apache

搜索引擎选择: Elasticsearch与Solr

搜索引擎选型调研文档 Elasticsearch简介* Elasticsearch是一个实时的分布式搜索和分析引擎.它可以帮助你用前所未有的速度去处理大规模数据. 它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合. Elasticsearch是一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架. 但是Lucene只是一个框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene.

elasticsearch 2种客户端的区别

Java连接ElasticSearch详解 Java连接ES有两种连接方式(即获得ES的Client) 1.创建一个node,加入集群中,通过这个node获得client. 2.通过TransportClient来连接集群. 区别 第一种方式,相当于额外启动了一个es的node节点,只是这个node是由我们编码控制的,可以设置成这个node是不存数据的节点(没有特殊原因你就应该这么设置),这个节点的配置和其他的节点没有什么区别,也是通过elasticsearch.yml文件来配置,配置文件放在c

Elasticsearch之elasticsearch5.x 新特性

其实,elasticsearch5.x 和 elasticsearch2.x 并不区别很大. 是因为,ELK里之前版本各种很混乱,直接升级到5.0了. 其实,elasticsearch5.x 按理来说是elasticsearch3.x,只是为了跟随ELK整体版本的统一.   下面给大家介绍一下 5.0 版里面的一些新的特性和改进 5.0? 天啦噜,你是不是觉得版本跳的太快了. 好吧,先来说说背后的原因吧. 相信大家都听说 ELK 吧,是 Elasticsearch . Logstash . Ki

使用python操作elasticsearch实现数据插入分析

前言: 例行公事,有些人可能不太了解elasticsearch,下面搜了一段,大家瞅一眼. Elasticsearch是一款分布式搜索引擎,支持在大数据环境中进行实时数据分析.它基于Apache Lucene文本搜索引擎,内部功能通过ReST API暴露给外部.除了通过HTTP直接访问Elasticsearch,还可以通过支持Java.JavaScript.Python及更多语言的客户端库来访问.它也支持集成Apache Hadoop环境.Elasticsearch在有些处理海量数据的公司中已经

[Big Data - ELK] ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段: 以下内容来自: http://baidu.blog.51cto.com/71938/1676798 日志主要包括系统日志.应用程序日志和安全日志.系统运维和开发人员可以通过日志了解服务器软硬件信息.检查配置过程中的错误及错误发生的原因.经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误. 通常,日志被分散的储存不同的设备上.如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志.这