首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
ElasticSearch开篇ES的安装
ElasticSearch的基本概念与名词解析
ElasticSearch数据管理文档的基础操作
ElasticSearch全文搜索API实践
ElasticSearch之Term-Query-API实践
ElasticSearch组合查询
ElasticSearch推荐搜索选项Suggesters的API
ElasticSearch统计需求之聚合
ElasticSearch集群管理API的使用
ElasticSearch索引管理API的使用
ElasticSearch中Mapping的使用
ElasticSearch关系模型之嵌套类型和父子文档
ElasticSearch正排索引与倒排索引简介
ElasticSearch全文搜索之倒排索引的实现
ElasticSearch数据相似的依据之相关性评分
ElasticSearch词项生成器之分词器
ElasticSearch分布式之集群中常见问题与解决方案
ElasticSearch分布式文档搜索机制
ElasticSearch数据持久化之分布式文档的存储流程
ElasticSearch分页之from+size、search after、scroll api
ElasticSearch聚合分析的原理之聚合结果一定准确
ElasticSearch数据副本策略
ElasticSearch数据副本模型
ElasticSearch集群运维
ElasticSearch索引的生命周期ILM
ElasticSearch安全之集群安全
ElasticSearch异常管理之搭建ELK日志系统
当前位置:
首页>>
技术小册>>
ElasticSearch零基础到实战
小册名称:ElasticSearch零基础到实战
Elasticsearch提供了一个可扩展和高性能的解决方案,用于搜索和分析大型数据集。Elasticsearch使用正排索引和倒排索引来加速搜索和查询操作。 **正排索引** 正排索引是一个文档到字段的映射。每个文档都包含一个或多个字段,例如标题、内容、日期等等。正排索引包含了所有的文档和它们的字段值。在搜索过程中,查询语句会被匹配到正排索引中对应的字段值上,然后返回相关的文档。 下面是一个简单的示例,展示如何使用Elasticsearch的Java API来创建一个包含两个字段的索引,一个是字符串类型,一个是整数类型。 ```asp import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.indices.CreateIndexRequest; import org.elasticsearch.client.indices.CreateIndexResponse; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.action.admin.indices.create.CreateIndexRequest; import org.elasticsearch.action.admin.indices.create.CreateIndexResponse; import org.elasticsearch.action.support.master.AcknowledgedResponse; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.mapper.MapperParsingException; import org.elasticsearch.rest.RestStatus; public class Main { public static void main(String[] args) throws Exception { // 创建一个客户端 RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http"))); // 创建一个包含两个字段的索引 CreateIndexRequest request = new CreateIndexRequest("my_index"); XContentBuilder builder = XContentFactory.jsonBuilder(); builder.startObject(); { builder.startObject("properties"); { builder.startObject("title"); { builder.field("type", "text"); } builder.endObject(); builder.startObject("count"); { builder.field("type", "integer"); } builder.endObject(); } builder.endObject(); } builder.endObject(); request.mapping(builder); CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT); // 关闭客户端 client.close(); } } ``` 在上面的示例中,我们创建了一个名为my_index的索引,并在其中定义了两个字段:title和count。title是一个文本字段,count是一个整数字段。创建索引的请求被发送到Elasticsearch服务器,如果成功创建索引,就会返回一个包含索引信息的响应。 **倒排索引** 倒排索引是一个单词到文档的映射。在倒排索引中,每个单词都被映射到一个或多个文档,这些文档包含了该单词。倒排索引非常适合用于全文搜索和倒排索引非常适合用于全文搜索和关键字查询。当用户输入一个查询时,查询语句中的每个单词都会被映射到倒排索引中的文档列表,然后Elasticsearch会将这些文档返回给用户。 下面是一个简单的示例,展示如何使用Elasticsearch的Java API来创建一个包含两个文档的索引,每个文档包含一个字符串字段。 ```asp import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.indices.CreateIndexRequest; import org.elasticsearch.client.indices.CreateIndexResponse; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.action.admin.indices.create.CreateIndexRequest; import org.elasticsearch.action.admin.indices.create.CreateIndexResponse; import org.elasticsearch.action.support.master.AcknowledgedResponse; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.mapper.MapperParsingException; import org.elasticsearch.rest.RestStatus; public class Main { public static void main(String[] args) throws Exception { // 创建一个客户端 RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http"))); // 创建一个包含两个文档的索引 IndexRequest request1 = new IndexRequest("my_index"); request1.id("1"); String json1 = "{\"text\": \"The quick brown fox jumps over the lazy dog.\"}"; request1.source(json1, XContentType.JSON); IndexResponse response1 = client.index(request1, RequestOptions.DEFAULT); IndexRequest request2 = new IndexRequest("my_index"); request2.id("2"); String json2 = "{\"text\": \"The quick brown fox.\"}"; request2.source(json2, XContentType.JSON); IndexResponse response2 = client.index(request2, RequestOptions.DEFAULT); // 关闭客户端 client.close(); } } ``` 在上面的示例中,我们创建了一个名为my_index的索引,并向其中添加了两个文档。每个文档都包含一个名为text的字符串字段,表示文档内容。使用IndexRequest来创建文档,发送请求到Elasticsearch服务器,如果成功创建文档,就会返回一个包含文档信息的响应。 **小结:** 正排索引和倒排索引是Elasticsearch中重要的概念,用于提高搜索和查询的性能。在本文中,我们介绍了这两种索引的基本概念,并通过简单的Java代码示例展示了如何使用Elasticsearch的API来创建和管理这些索引。如果您想深入了解Elasticsearch,建议阅读官方文档和参考资料。
上一篇:
ElasticSearch关系模型之嵌套类型和父子文档
下一篇:
ElasticSearch全文搜索之倒排索引的实现
该分类下的相关小册推荐:
ElasticSearch入门与实践