我们生活中的数据总体分为两种:结构化数据和非结构化数据。
创新互联主要企业基础官网建设,电商平台建设,移动手机平台,重庆小程序开发等一系列专为中小企业定制开发产品体系;应对中小企业在互联网运营的各种问题,为中小企业在互联网的运营中保驾护航。- 结构化数据:指具体固定格式或有限长度的数据,如数据库中的数据,元数据等。
- 非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等。
数据库适合结构化数据的精确查询,而不适合非结构化数据的模糊查询及灵活搜索(特别是数据量大的时候),无法提供想要是实时性。
对于非结构化的数据的检索,只能对全部内容做分析(分词)。
分词后如何搜索?倒排索引and正排索引
倒排索引---根据你所搜索的text进行分词去文档中搜索。
正排索引---将文档进行分词匹配你搜索的关键字
这里有一个问题:数据库是正排索引还是倒排索引?
ES是使用了Lucene做搜索框架来实现自己的搜索部分内容。
- 稳定、索引性能高
每小时能够索引150G以上的数据,对内存的要求小,只需要1M的堆内存,增量索引和批量索引一样快。 索引的大小约为索引文本大小的20%~30%
- 高效、准确、高性能的搜索算法
强大的查询方式支持短语查询、通配符查询、临近查询、范围查询等。支持多个索引查询结果合并。支持更新操作和查询操作同时进行。支持高亮、join、分组结果功能。
- 跨平台
作为开源项目,你可在商业或开源项目中使用。Lucene有多种语言实现版可选(Python、PHP、C++等)不只是Java
Lucene的索引结构是有层次结构的:索引、段、文档、域、词
Es企业应用场景:
- 搜索类场景 比如说电商网站、招聘网站、新闻咨询类网站、各种app的搜索
- 日志分析类场景 经典的ELK(Es+Logstash/Kibana)组合,可以完成日志收集,日志存储,日志分析查询界面基本功能,目前改方案的实现很普及,大部分企业日志分析系统使用该方案。我们公司就是用于分布式日志的搜集方便排查问题,查看日志不用在分别打开日志查询,同步到es后整个事务的流程都可以查看到。
- 数据预警平台及数据分析场景 例如电商价格预警,在支付的电商平台设置价格预警,当优惠的价格低于某个指的时候,触发通知消息,通知用户购买。 数据分析常见的比如分析电商平台销售量top 10 的品牌,分析博客系统、头条网站app top10 关注度、评论数、访问量的内容等等。我们公司就是用于日后的数据分析及数据的存储,因数据的重要性数据从存在数据库-redis->clickHouse->ES 都有涉及到方便数据的分析及处理,同时也增大维护服务的成本。
关系性数据库 | Elasticsearch |
数据库Database | index |
表table | Type |
数据行Row | Document |
数据列Column | Field |
约束Schema | Mapping |
常用的操作:
Match Query
- 先分词,再匹配,本质是bool查询,term之间默认的or的关系
Match Phrase Query
- 同样需要分词,分词后需要保持词之间的相对顺序,默认slop是0;
//term --- 完全匹配
GET /tk-policy-testenv/_search
{
"query": {
"bool": {
"filter": [
{
"term": {
"myname_no": "7198220142418"
}
}
]
}
},
"sort": [
{
"@timestamp": {
"order": "desc"
}
}
],
"size": 100,
"from": 0
}
GET /data-repo-stream-testenv/_search
{
"query": {
"bool": {
"filter": [
{
"term": {
"key": "7_ESREPO:2cfd21a4b3a24747b3b624c3ead4f317"
}
}
]
}
},
"sort": [
{
"@timestamp": {
"order": "desc"
}
}
],
"size": 100,
"from": 0
}
GET /tencent:zx_hopen-2022.07/_search
{
"query": {
"bool": {
"must": [
{ "match": { "message": "HLCP-INSTALMENT"}},
{ "match": { "message": "我要进行续期回调报文 = "}}
],
"should": [
{ "match": { "message": "H220615018793680123232" }}
]
}
}
GET /tencent:nt_zx_hopen-2022.08/_search?filter_path=hits.total,hits.hits._source&_source=message,log
{
"query": {
"bool": {
"must": [
{
"match_phrase": {
"message": {
"query": "服务名,TraceId"
}
}
}
]
,
"filter": [{
"match_phrase": {
"host.ip": "10.161.165.212"//某一个服务的地址 用哪一个打开哪一个
//"host.ip": "10.161.165.114"
//"host.ip": "10.161.165.85"
//"host.ip": "10.161.165.102"
//"host.ip": "10.161.165.169"
//"host.ip": "10.161.165.203"
//"log.file.path" : "spbt_9001"
}
}]
}
},
"sort": [
{
"@timestamp": {
"order": "desc"
}
}
],
"size": 5,
"from": 0
}
可视化工具:Kibana是一个基于Node的索引数据统计工具,可以利用elk的聚合功能,生成各种图表,如柱形图、线状图、饼图等。
特点:
- 更便捷、学习成本低、查看周围文档
- DSL语法更灵活,有学习成本
日常工作中查看日志排查问题足够,通过日志中的关键信息即可查询到报错信息,利用各环境创建不同的索引,可以排查指定环境的日志,还可以查看各时间段的请求量,某一天的日志。结合Skywalking调用链路监控将调用各服务相关日志聚合到ES同一个索引下,通过TraceId关联一条事务的所有日志。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
分享名称:Elasticsearch搜索引擎-创新互联
文章分享:http://scgulin.cn/article/ehcoi.html