首页
技术小册
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中,索引是一种数据结构,用于管理和组织文档。一个索引可以包含多个文档,每个文档都有自己的唯一ID。ElasticSearch将索引分为多个分片和副本,这些分片和副本分布在集群中的多个节点上,从而实现了数据的分布式存储和搜索。 在ElasticSearch中,我们可以使用PUT命令创建一个新的索引,如下所示: ```asp PUT /索引名称 ``` 其中,索引名称可以是任意字符串,但建议使用具有描述性的名称。 文档 在ElasticSearch中,文档是数据的基本单位。一个文档可以是一个JSON对象,包含多个字段。ElasticSearch使用文档的字段来进行搜索和过滤操作。 每个文档都有一个唯一的ID,可以使用PUT命令将一个新的文档插入到指定的索引中,如下所示: ```asp PUT /索引名称/_doc/文档ID { "字段1": "值1", "字段2": "值2", ... } ``` 其中,文档ID可以是任意字符串,但建议使用具有描述性的名称。另外,字段名和字段值可以根据实际情况进行修改。 **查询** 在ElasticSearch中,我们可以使用查询来搜索文档。查询可以根据关键字、过滤条件、排序方式等多个因素来进行匹配。ElasticSearch支持多种类型的查询,包括term查询、match查询、range查询、bool查询等等。 下面是一些常见的查询示例: (1)term查询:用于精确匹配一个字段的值 ```asp GET /索引名称/_search { "query": { "term": { "字段名": "字段值" } } } ``` (2)match查询:用于匹配一个字段中包含指定关键字的文档 ```asp GET /索引名称/_search { "query": { "match": { "字段名": "关键字" } } } ``` (3)range查询:用于匹配一个字段的值在指定范围内的文档 ```asp GET /索引名称/_search { "query": { "range": { "字段名": { "gte": 最小值, "lte": 最大值 } } } } ``` (4)bool查询:用于组合多个查询条件,支持must、should、must_not和filter等操作符。 ```asp GET /索引名称/_search { "query": { "bool": { "must": [ { "term": { "字段1": "值1" } }, { "term": { "字段2": "值2" } } ], "filter": { "range": { "字段3": { "gte": 最小值, "lte": 最大值 } } }, "should": [ { "match": { "字段4": "关键字1" } }, { "match": { "字段5": "关键字2" } } ], "must_not": { "term": { "字段6": "值3" } } } } } ``` **搜索** 在ElasticSearch中,我们可以使用搜索API来执行查询操作。搜索API可以接受多个参数,包括查询条件、分页参数、排序方式等等。 下面是一个基本的搜索示例: ```asp GET /索引名称/_search { "query": { "match": { "字段名": "关键字" } } } ``` 其中,我们可以将字段名和关键字替换为实际的字段名和关键字。另外,我们还可以添加一些其他的参数来控制搜索的结果,如下所示: ```asp GET /索引名称/_search { "query": { "match": { "字段名": "关键字" } }, "from": 0, // 分页参数,表示从第0条记录开始 "size": 10, // 分页参数,表示返回10条记录 "sort": [ // 排序方式,按照score字段降序排列 { "score": { "order": "desc" } } ], "_source": ["字段1", "字段2"] // 返回指定的字段 } ``` 示例代码 下面是一个完整的ElasticSearch搜索示例代码,可以用来搜索指定索引中的文档,并输出匹配的结果: ```asp from elasticsearch import Elasticsearch # 创建ElasticSearch客户端 es = Elasticsearch([{'host': 'localhost', 'port': 9200}]) # 搜索索引中包含关键字的文档 query = { "query": { "match": { "字段名": "关键字" } } } # 返回前10条匹配的结果 res = es.search(index="索引名称", body=query, size=10) # 输出匹配的结果 for hit in res['hits']['hits']: print(hit['_source']) ``` **小结:** 本文介绍了ElasticSearch分布式文档搜索机制,包括索引、文档、查询和搜索等方面。ElasticSearch具有分布式存储和搜索的特点,可以帮助我们快速地搜索和分析海量数据。在实际
上一篇:
ElasticSearch分布式之集群中常见问题与解决方案
下一篇:
ElasticSearch数据持久化之分布式文档的存储流程
该分类下的相关小册推荐:
ElasticSearch入门与实践