当前位置:实例文章 » 其他实例» [文章]ElasticSearch学习(1) 基础操作

ElasticSearch学习(1) 基础操作

发布人:shili8 发布时间:2025-01-08 10:44 阅读次数:0

**ElasticSearch 学习 (1) 基础操作**

ElasticSearch 是一个开源的、分布式的搜索引擎,能够快速地存储、检索和分析大规模数据。它基于 Lucene 的技术,并且提供了一个简单易用的 RESTful API。下面是 ElasticSearch 的基础操作。

###1. 安装和启动首先,我们需要安装 ElasticSearch。可以从官方网站下载最新的版本,或者使用 Homebrew 或 apt-get 等包管理工具进行安装。

bash# 使用 Homebrew 安装brew install elasticsearch# 使用 apt-get 安装sudo apt-get install elasticsearch


启动 ElasticSearch服务:

bash# 启动服务bin/elasticsearch -d


###2. 基本概念和术语* **索引 (Index)**:ElasticSearch 中的索引相当于传统数据库中的表。每个索引都有一个唯一的名称。
* **文档 (Document)**:索引中的一条记录,相当于传统数据库中的行。
* **字段 (Field)**:文档中的一列数据,相当于传统数据库中的列。

###3. 创建索引创建索引可以使用以下命令:

bash# 使用 REST API 创建索引curl -XPUT ' />
# 使用 Java API 创建索引IndexResponse response = client.index().index("my_index").get();


###4. 添加文档添加文档可以使用以下命令:

bash# 使用 REST API 添加文档curl -XPOST ' -H 'Content-Type: application/json' -d '{"name": "John", "age":30}'

# 使用 Java API 添加文档IndexResponse response = client.index().index("my_index").type("_doc").id("1").body("{"name":"John","age":30}").get();


###5. 查询文档查询文档可以使用以下命令:

bash# 使用 REST API 查询文档curl -XGET ' />
# 使用 Java API 查询文档SearchResponse response = client.search().index("my_index").type("_doc").query(QueryBuilders.termQuery("name", "John")).get();


###6. 删除索引删除索引可以使用以下命令:

bash# 使用 REST API 删除索引curl -XDELETE ' />
# 使用 Java API 删除索引DeleteResponse response = client.delete().index("my_index").get();


###7. 索引映射索引映射是定义索引结构的配置文件。可以使用以下命令创建索引映射:

bash# 使用 REST API 创建索引映射curl -XPUT ' -H 'Content-Type: application/json' -d '{"properties": {"name": {"type": "text"}, "age": {"type": "integer"}}}'

# 使用 Java API 创建索引映射IndexResponse response = client.index().index("my_index").type("_doc").putMapping(Mapping.builder()
 .properties(
 PropertiesBuilder.of("name", TextBuilder.of())
 .andThen(PropertiesBuilder.of("age", IntegerBuilder.of()))
 )
 .build()).get();


###8. 分析器分析器是用于处理文本数据的组件。可以使用以下命令创建分析器:

bash# 使用 REST API 创建分析器curl -XPUT ' -H 'Content-Type: application/json' -d '{"analysis": {"analyzer": {"my_analyzer": {"type": "custom", "tokenizer": "standard"}}}}'

# 使用 Java API 创建分析器IndexResponse response = client.index().index("my_index").type("_doc").putSettings(Settings.builder()
 .analysis(AnalysisBuilder.of("analyzer", CustomAnalyzerBuilder.of("my_analyzer")
 .tokenizer(TokenizerBuilder.of("standard"))
 .build()))
 .build()).get();


###9. 脚本脚本是用于执行自定义逻辑的组件。可以使用以下命令创建脚本:

bash# 使用 REST API 创建脚本curl -XPOST ' -H 'Content-Type: application/json' -d '{"script": {"id": "my_script", "lang": "groovy"}}'

# 使用 Java API 创建脚本ScriptResponse response = client.script().putScript(ScriptBuilder.of("my_script")
 .language(Language.GROOVY)
 .build()).get();


###10. 监控和诊断监控和诊断是用于检查 ElasticSearch 运行状态的组件。可以使用以下命令获取监控信息:

bash# 使用 REST API 获取监控信息curl -XGET ' />
# 使用 Java API 获取监控信息GetNodesStatsResponse response = client.nodes().getStats().get();


###11. 安全安全是用于保护 ElasticSearch 的组件。可以使用以下命令创建用户:

bash# 使用 REST API 创建用户curl -XPOST ' -H 'Content-Type: application/json' -d '{"username": "my_user", "password": "my_password"}'

# 使用 Java API 创建用户CreateUserResponse response = client.security().createUser(UserBuilder.of("my_user")
 .password(PasswordBuilder.of("my_password"))
 .build()).get();


###12. 高可用性高可用性是用于保证 ElasticSearch 运行的组件。可以使用以下命令创建副本:

bash# 使用 REST API 创建副本curl -XPOST ' -H 'Content-Type: application/json' -d '{"index": "my_index", "num_replicas":1}'

# 使用 Java API 创建副本CreateReplicaResponse response = client.replication().createReplica(ReplicaBuilder.of("my_index")
 .numReplicas(1)
 .build()).get();


###13. 分布式分布式是用于保证 ElasticSearch 运行的组件。可以使用以下命令创建分片:

bash# 使用 REST API 创建分片curl -XPOST ' -H 'Content-Type: application/json' -d '{"index": "my_index", "num_shards":1}'

# 使用 Java API 创建分片CreateShardResponse response = client.cluster().createShard(ShardBuilder.of("my_index")
 .numShards(1)
 .build()).get();


###14. 分布式事务分布式事务是用于保证 ElasticSearch 运行的组件。可以使用以下命令创建分布式事务:

bash# 使用 REST API 创建分布式事务curl -XPOST ' -H 'Content-Type: application/json' -d '{"index": "my_index", "num_transactions":1}'

# 使用 Java API 创建分布式事务CreateTransactionResponse response = client.transaction().createTransaction(TransactionBuilder.of("my_index")
 .numTransactions(1)
 .build()).get();


###15. 分布式锁分布式锁是用于保证 ElasticSearch 运行的组件。可以使用以下命令创建分布式锁:

bash# 使用 REST API 创建分布式锁curl -XPOST ' -H 'Content-Type: application/json' -d '{"index": "my_index", "num_locks":1}'

# 使用 Java API 创建分布式锁CreateLockResponse response = client.lock().createLock(LockBuilder.of("my_index")
 .numLocks(1)
 .build()).get();


### 总结ElasticSearch 是一个强大的搜索引擎,可以用于处理大规模数据。它提供了许多组件,包括索引、文档、字段、分析器、脚本、监控和诊断、安全、高可用性、分布式、分布式事务和分布式锁等。这些组件可以帮助开发者构建高性能的搜索应用程序。

### 参考* [ElasticSearch 文档]( />* [ElasticSearch API 文档](

其他信息

其他资源

Top