ElasticSearch文档(document)在index上的增删改查

一、document定义:

  1. 在 Elasticsearch 中,Document(文档)是存储在索引中的最小数据单元。它是一条具有结构化数据的记录,以 JSON(JavaScript Object Notation)格式表示。

  2. 每个文档都有一个唯一的标识符,称为 _id。如果你没有为文档提供自定义的 _id 值,Elasticsearch 将为其生成一个唯一的标识符。

  3. 文档可以包含任意数量的字段,每个字段都有一个字段名和一个对应的值。字段的值可以是文本、数字、日期、布尔值、数组或嵌套的对象。

  4. 在 Elasticsearch 中,文档是不可变的。这意味着一旦创建了文档,你不能直接修改它,而是通过替换整个文档来实现更新。

  5. 文档通常被组织在索引中,索引是一组具有共同特征的文档集合。你可以根据索引、类型和标识符来访问和操作文档。

  6. 在查询数据时,你可以使用 Elasticsearch 查询语言(Elasticsearch Query DSL)来搜索和过滤文档。

  7. 总结起来,Elasticsearch 中的文档是以 JSON 格式存储的记录,每个文档都有唯一的标识符,可以包含任意数量的字段和对应的值。文档是不可变的,可以通过索引、类型和标识符进行访问和操作。

二、单条增删改查

1、创建索引:

PUT /myindex

create_index

2、添加文档:

POST /myindex/_doc/1
{
  "title": "Example Document",
  "content": "This is an example document"
}

create

3、获取文档:

GET /myindex/_doc/1

get

4、更新文档:

POST /myindex/_doc/1/_update
{
  "doc": {
    "title": "Updated Document",
    "content": "This document has been updated"
  }
}

执行更新:POST /myindex/_doc/1/_update

在这里插入图片描述
再次查询:GET /myindex/_doc/1

get_2

5、删除文档:

DELETE /myindex/_doc/1

delete

请将 myindex 替换为你想要操作的索引名称。
在 Kibana Console 中逐步执行这些操作,你将能够查看到对索引中文档的增删改查操作的结果。

三、批量增删改查:

1、批量添加文档:

POST /myindex/_bulk
{"index":{"_id":"1"}}
{"title":"Document 1","content":"This is document 1"}
{"index":{"_id":"2"}}
{"title":"Document 2","content":"This is document 2"}

2、批量更新文档:

POST /myindex/_bulk
{"update":{"_id":"1"}}
{"doc":{"title":"Updated Document 1"}}
{"update":{"_id":"2"}}
{"doc":{"title":"Updated Document 2"}}

3、批量删除文档:

POST /myindex/_bulk
{"delete":{"_id":"1"}}
{"delete":{"_id":"2"}}

4、批量查询文档:

POST /myindex/_msearch
{}
{"query":{"match_all":{}},"size":10}

四、document小结:

  1. 在 Elasticsearch 中,Document(文档)是存储在索引中的最小数据单元。每个文档都有一个唯一的标识符 _id,可以自动生成或自定义。

  2. 文档使用 JSON(JavaScript Object Notation)格式表示,可以包含任意数量的字段。字段由字段名和对应的值组成,值可以是文本、数字、日期、布尔值、数组或嵌套的对象。

  3. 文档是不可变的,一旦创建,不能直接修改。要更新文档,需要替换整个文档。

  4. 文档通常被组织在索引中,索引是一组具有共同特征的文档集合。可以根据索引、类型和标识符来访问和操作文档。

  5. 文档的创建和更新是异步的,意味着写入操作不会立即对搜索结果产生影响。Elasticsearch 会将写入操作存储在内存缓冲区中,然后按照一定的策略将数据刷新到磁盘。

  6. 在查询数据时,可以使用 Elasticsearch 查询语言(Elasticsearch Query DSL)来搜索和过滤文档。通过构建查询语句,可以对文档进行全文搜索、精确匹配、范围过滤等操作。

  7. 文档的性能受到多个因素的影响,包括索引设置、分片和副本配置、硬件性能等。为了提高性能,可以使用批量操作来同时创建、更新或删除多个文档。

  8. 总结起来,Elasticsearch 中的文档是以 JSON 格式存储的记录,每个文档都有唯一的标识符。文档可以包含任意数量的字段和对应的值,是不可变的。可以通过索引、类型和标识符来访问和操作文档,使用查询语言进行搜索和过滤。文档的性能受到多个因素的影响,可以通过批量操作提高性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用 Spring Boot 操作 Elasticsearch增删改查可以通过 Elasticsearch 的 Java API 完成。以下是一个简单的示例: 1. 添加 Elasticsearch Maven 依赖 ```xml <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.13.1</version> </dependency> ``` 2. 创建 Elasticsearch 客户端连接 ```java @Configuration public class ElasticsearchConfig { @Bean public RestHighLevelClient restHighLevelClient() { RestClientBuilder builder = RestClient.builder( new HttpHost("localhost", 9200, "http") ); return new RestHighLevelClient(builder); } } ``` 3. 定义 Elasticsearch 数据模型 ```java @Document(indexName = "my_index", createIndex = true) public class Book { @Id private String id; private String title; private String author; private String content; // 省略 getter 和 setter 方法 } ``` 4. 定义 Elasticsearch 数据访问层接口 ```java @Repository public interface BookRepository extends ElasticsearchRepository<Book, String> { } ``` 5. 实现 Elasticsearch 数据访问层接口 ```java @Service public class BookService { private final BookRepository bookRepository; public BookService(BookRepository bookRepository) { this.bookRepository = bookRepository; } public void save(Book book) { bookRepository.save(book); } public Book getById(String id) { return bookRepository.findById(id).orElse(null); } public void deleteById(String id) { bookRepository.deleteById(id); } public List<Book> search(String query) { SearchHit[] searchHits = searchHits(query); List<Book> books = new ArrayList<>(); for (SearchHit searchHit : searchHits) { books.add(searchHit.getSourceAsMap()); } return books; } private SearchHit[] searchHits(String query) { SearchRequest searchRequest = new SearchRequest("my_index"); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(QueryBuilders.queryStringQuery(query)); searchRequest.source(searchSourceBuilder); SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); return searchResponse.getHits().getHits(); } } ``` 使用以上方法,你可以在 Spring Boot 中非常容易地操作 Elasticsearch,进行增删改查的操作。需要注意的是,Elasticsearch 的 Java API 非常强大,可以满足各种复杂的需求。如果你需要更多的细节,请查看 Elasticsearch 官方文档

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Run,boy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值