《深入剖析 Elasticsearch:强大的 Java 开源搜索引擎》
Elasticsearch 作为一款由 Java 开发的开源搜索引擎,以其卓越的特性在 Java 开发社区中备受青睐。它具备实时搜索、稳定可靠、快速安装和方便使用等突出优点,为开发者提供了强大的搜索解决方案。
一、索引操作
(一)创建索引
-
基本创建:通过
PUT /索引名
(如PUT /products
)可以创建索引。需注意索引的健康状态分为红色(不可用)、黄色(可用但有风险)和绿色(健康)。默认情况下,Elasticsearch 在创建索引时会为其创建一个备份索引和一个主索引。 -
分片配置:可以使用以下方式进行索引分片配置。
PUT /products { "settings": { "number_of_shards": 1, "number_of_replicas": 0 } }
同时,Elasticsearch 支持丰富的字段类型,如字符串类型(keyword、text)、数字类型(integer、long、float、double)、布尔类型、日期类型等。创建索引时可以定义映射,指定字段类型。
例:
PUT /products { "settings": { "number_of_shards": 1, "number_of_replicas": 0 }, "mappings": { "properties": { "title":{ "type": "keyword" }, "price":{ "type": "double" }, "created_at":{ "type": "date" }, "description":{ "type": "text" } } } }
(二)查询索引
使用
GET /_cat/indices?v
可以查询所有索引信息。通过GET /索引名/_mapping
(如GET /products/_mapping
)可以查看特定索引的映射。(三)删除索引
可以使用
DELETE /索引名
(如DELETE /products
)删除指定索引,也可以使用DELETE /*
(其中*
代表通配符,可删除所有索引)。二、文档操作
(一)添加文档
可以通过指定文档 ID(如
POST /products/_doc/1
)或者让系统自动生成文档 ID(如POST /products/_doc/
)来添加文档。添加文档后会返回包含索引信息、文档 ID、版本号等内容的响应。(二)查询文档
使用
GET /products/_doc/文档 ID
可以查询特定文档,响应中包含文档的详细信息。(三)删除文档
通过
DELETE /products/_doc/文档 ID
可以删除指定文档,返回删除操作的结果信息。(四)更新文档
有两种更新方式:
- 先删除原始文档再插入更新后的文档,如
PUT /products/_doc/文档 ID
。 - 保留原始内容并在此基础上更新,可使用
POST /products/_doc/文档 ID/_update
。
(五)批量操作
可以使用批量操作同时处理多个文档的添加、更新和删除。例如:
- 批量索引两条文档:
POST /products/_doc/_bulk { "index":{ "_id":"1"}} { "title":"iphone14","price":8999.99,"created_at":"2021-09-15","description":"iPhone 13屏幕采用6.8英寸OLED屏幕"} { "index":{ "_id":"2"}} { "title":"iphone15","price":8999.99,"created_at":"2021-09-15","description":"iPhone 15屏幕采用10.8英寸OLED屏幕"}
2.更新文档同时删除文档:
POST /products/_doc/_bu
- 先删除原始文档再插入更新后的文档,如