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 文档](