Elasticsearch搜索引擎-创新互联

我们生活中的数据总体分为两种:结构化数据和非结构化数据。

创新互联主要企业基础官网建设,电商平台建设,移动手机平台,重庆小程序开发等一系列专为中小企业定制开发产品体系;应对中小企业在互联网运营的各种问题,为中小企业在互联网的运营中保驾护航。
  • 结构化数据:指具体固定格式或有限长度的数据,如数据库中的数据,元数据等。
  • 非结构化数据:指不定长或无固定格式的数据,如邮件,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
数据库Databaseindex
表tableType
数据行Row        Document
数据列ColumnField
约束SchemaMapping

常用的操作:

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://pwwzsj.com/article/ehcoi.html