ElasticSearch入门

一。 ElasticSerch的应用场景。

  1. 简介

ElasticSerach是一个分布式,高性能,高可用,可伸缩,RESTful 风格的搜索和数据分析引擎。通常作为Elastic Stack的核心来使用。ES是一个近实时的搜索引擎。ElasticSerch在实际生产里通常和LogStash, Kibana, FileBeat 一起构成ElasticStack来使用,它是这些组件里面最核心的一个

2.ElasticSerch的优势(即为什么要使用es)

2.1横向可拓展性:只需要加一台服务器加一些配置,启动ES进程即可并入集群。

2.2分片机制提供更好的分布性: 同一个索引分成多个分片,分而治之的方式提升处理效率

2.3:高可用:提供复制机制,一个分片可设置多个复制,使得服务器宕机时集群可照常运行。

复制代码
3.ElasticSerch的限制
   3.1 无法连表查询
   3.2 不支持事务
   3.3 like查询的字符串会被分词,导致不完全匹配的结果掺杂其中。
   3.4 各结点的一致问题:默认机制为通过多播机制,同步元数据信息,在繁忙的集群中可能会由于     			网络阻塞导致各个节点元数据不一致。
   3.5 没有细致的权限管理机制,无法像mysql那样分组用户及权限。
 
 3.核心概念
 	1.索引(index)
 	   在Elasticsearch中,索引时文档的集合,每个文档都属于一个特定的索引,并具有唯一的ID,索引是数据的逻辑容器,并具有唯一ID。索引是数据的逻辑容器,类似与传统数据库中的表。
 	 2.文档(Document)
 	    文档是ElasticSerch中的基本数据单元,通常用JSON表示,一个索引包含多个文档,每个文档都是一个唯一的ID和一段字段,字段可以包含文字,数字,日期等不同类型的数据。
 	 3.映射(Mapping)
 	 	映射定义了索引中的文档字段及其属性,通过映射,你可以知道字段的数据类型,分词器等信息,以优化搜索和分析。

4.基本查询语法。

java 复制代码
{
  "query":{
     "match":{
       "field_name": "search_text"
     }
   }
}

其中:

match: 查询类型,表示进行匹配查询。

field_name: 要搜索的字段。

search_text: 要搜索的文本

java 复制代码
"query":{
  "multi_match":{
    "query":"serch_text"
    "fields": ["field1", "field2"]
   }
}

其中:

multi_match: 多字段匹配查询。

query: 要搜索文本。

fields: 包含要搜索的字段的数组。

java 复制代码
{
	"query":{
       "range":{
          "field_name":{
           "get": 10,
           "lte": 100
           }
		}
	}
}

其中:

range: 范围查询。

field_name: 要进行范围查询的字段

get 和 lte :大于等于和小于等于的范围条件。

3.聚合函数

java 复制代码
"aggs":{
  "agg_name":{
    "agg_type": {
      "field":"field_name"
     }
  }
}

其中:

aggs: 聚合查询

agg_name: 聚合的名称

agg_type: 聚合的类型(例如, 'terms','avg' 等)。

field_name:用于聚合的字段

桶聚合

java 复制代码
{
 "aggs":{
   "terms_agg":{
     "terms":{
       "field":"field_name",
         "size":10
	  }
    }
  }
}

语法解释:

terms_agg: 桶聚合

terms:按字段值进行分组

field: 用于分组的字段

size:返回的桶的数量

聚合类型:

Terms Aggregation(词条聚合):按字段的唯一值进行分组

Range Aggregation(范围聚合):按字段的值划分为不同的范围

Date Histogram Aggregation: 按日期字段创建直方图。

Average Aggregation: 计算字段的平均值。

Sum Aggregation: 计算字段的总和。

Min and Max Aggregations(最小值和最大值聚合): 分别计算字段的最大值和最小值

Cardinality Aggregation: 计算字段的唯一值数量

4.排序

java 复制代码
{
  "sort":[
   { "field_name": { "order": "asc" } },
   { "another_field": { "order": "desc" } }
  ]
}

其中:

sort:排序查询。

field_name 和 another_field要排序的字段。

order:排序顺序,可以是'asc'(升序)或"desc"(降序)。

5.分页

java 复制代码
{
  "from":0,
  "size": 10,
  "query":{
    "math_all" : {}
  }
}

其中:

from: 起始文档的索引

size:返回的文档数量

query:实际查询条件

java 复制代码
{
   "query":{
     "match":{
      "field_name": "search_text"
 	 }
 	   	},
 	"highlight":{
 	 "fields":{
 	   "field_name":{}
 	 }
   }
}

其中:

highlight: 高亮显示查询结果

fields:要高亮显示的字段

相关推荐
蓝天守卫者联盟11 分钟前
如何选择二氯甲烷回收设备厂家:技术路线与市场格局深度解析
大数据·人工智能·python·sqlite·tornado
xiaoduo AI4 分钟前
客服机器人能否支持自动排班与请假?Agent 系统支持人员替班,夜间无人值守该如何应
大数据·人工智能·机器人
紧固视界31 分钟前
2026上海紧固件专业展,紧固件设备集中展示平台
大数据·人工智能·上海紧固件展·紧固件展·上海紧固件专业展
DevOpenClub34 分钟前
全国三甲医院主体信息 API 接口
java·大数据·数据库
大喵桑丶1 小时前
ZABBIX7二次开发AI监控数据调取杂记
大数据·人工智能·python
DX_水位流量监测1 小时前
德希科技在线多参数七参传感器使用说明
大数据·水质监测·水质传感器·水质厂家·供水水质监测·在线多参数水质分析仪·水质七参
北京软秦科技有限公司1 小时前
物流运输环境检测进入AI报告审核时代:IACheck如何重塑报告精准性与全流程质量把控?
大数据·人工智能
xcLeigh2 小时前
KES数据库表空间目录自动创建特性详解与存储运维最佳实践
大数据·运维·服务器·数据库·表空间·存储
黎阳之光2 小时前
视频孪生领航者,以中国技术定义全球数智化新高度
大数据·人工智能·算法·安全·数字孪生
Francek Chen3 小时前
【大数据存储与管理】NoSQL数据库:01 NoSQL简介
大数据·数据库·分布式·nosql