关于elasticsearch的基本概念,我的学习笔记

Elasticsearch是一个基于Lucene的分布式搜索引擎,它包含了许多的高端功能,这些高端功能使得对于大规模的数据的存储、查询和分析变得非常快捷和高效。

下面是一些关于Elasticsearch的基本概念和它的代码实现步骤。

1. 索引(Index)
Index在Elasticsearch中代表着一个文档的集合,类似于关系数据库中的表。一个Index包含了许多的Documents,每个Document包含着一些不同的字段(field),每个字段都设置了自己的类型。

Code implementation:

创建一个Index时,需要定义Index的名称和它所包含的字段。下面是创建一个名为“my_index”的Index,并且定义三个字段name、age、email的示例代码:

PUT /my_index { "mappings": { "properties": { "name": { "type": "text" }, "age": { "type": "integer" }, "email": { "type": "keyword"} } } }

2. 文档(Document)
Document代表着一个JSON对象,包含了一些相关的数据。Document可以存在于Index中,并且它们必须包含唯一的ID,这个ID是用来区分不同的Document的。

Code implementation:

将一个Document添加到Elasticsearch中的示例代码:

PUT my_index/_doc/1 { "name":"John Doe","age":28,"email":"johndoe@example.com" }

这个代码将一个Document添加到了名为“my_index”的Index中。Document的ID是“1”,它包含了一个名为“name”的字段,其中的值是“John Doe”。

3. 映射(Mapping)
Mapping定义了一个Index中每个字段的数据类型和其他的属性。它决定了文档写入索引的方式,以及如何进行搜索。

Code implementation:

下面是一个示例映射,定义了一个名为“my_index”的Index并且包含了三个字段,它们的类型分别是text、integer和keyword:

PUT /my_index { "mappings": { "properties": { "name": { "type": "text" }, "age": { "type": "integer" }, "email": { "type": "keyword"} } } }

4. 查询(Query)
查询是在Elasticsearch中进行搜索的方式。通过构建查询语句,可以从Index中获取相关的文档。

Code implementation:

下面是一个基本的查询示例,它将查找名字包含了“John”的Document:

GET /my_index/_search { "query": { "match": { "name": "John" } } }

5. 聚合(Aggregation)
聚合是对查询结果进行统计分析的方式。它可以根据不同的条件,对查询结果进行分组、计数等操作。

Code implementation:

下面是一个示例聚合,它将返回名字中含有“John”的Document的平均年龄:

GET /my_index/_search { "query": { "match": { "name": "John" } } , "aggs": { "average_age": { "avg": { "field": "age" } } } }

6. 过滤(Filter)
过滤是对查询结果进行限制的方式。它可以根据不同的条件,对查询结果进行过滤,从而获取符合特定条件的文档。

Code implementation:

下面是一个示例过滤,它将返回名字中含有“John”、Email中包含了“example.com”的Document:

GET /my_index/_search { "query": { "bool": { "must": [ { "match": { "name": "John" } }, { "wildcard": { "email": "*@example.com" } } ] } } }

以上是一些关于Elasticsearch的基本概念和它的代码实现步骤。通过这些例子,你可以更好地了解并使用Elasticsearch。

Related Posts

  • MySQL表的联结和连接
  • 初级MySQL表的增加、删除、查询和修改
  • 在Entity Framework中,DbContext是一个重要的类
  • 解决MySQL的ONLY_FULL_GROUP_BY报错问题,包括4种方法和示例
  • 使用Sqoop将Hive数据导出到Oracle
  • postgresql.conf中设置的max_parallel_workers_per_gather数量并不代表实际并行workers数量
  • MySQL——单行函数和聚合函数
  • 使用row_number()over(order by)和with * as语句进行排名的方法
  • 问题在于如何建立mysql表格
  • clickhouse-配置说明
  • SummingMergeTree在clickhouse中的应用
  • 常见的Redis缓存中间件考点
  • 请阐述主表与从表之间的关系
  • 第二部分:SQL Server对象类型——索引(Index)(第三部分)
  • 以Intel为基础的淡水养殖水质追溯方案
  • 使用Sqoop将Hive数据导出到Oracle