Elasticsearch核心技术与实战学习笔记 55 第二部分总结回顾

一 序

  本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。

二 搜索与算分

  • 结构化搜索与⾮结构化搜索

    • Term 查询(不分词)和基于全⽂本 Match (text类型会做分词,keyword不会做分词,转成term查询)搜索的区别

    • 对于需要做精确匹配的字段,需要做聚合分析的字段,字段类型设置为 Keyword

  • Query Context v.s Filter Context

    • Filter Context 可以避免算分,并且利⽤缓存(性能优于query)

    • Bool 查询中 Filter 和 Must Not 都属于 Filter Context

2.1 搜索与算分

  • 搜索的算分

    • TF-IDF / 字段 Boosting(调解es最终的算分)
  • 单字符串多字段查询:multi-match

    • Best_Field(单个字段算分最高的结果) / Most_Fields(算分结果相加) / Cross_Field()
  • 提⾼搜索的相关性

    • 多语⾔:设置⼦字段和不同的分词器提升搜索的效果

    • Search Template 分离代码逻辑和搜索 DSL

    • 多测试,监控及分析⽤户的搜索语句和搜索效果(建议持续监控搜索语句的效果,进行优化)

2.2回顾总结:聚合 / 分⻚

  • 聚合

    • Bucket / Metric / Pipeline
  • 分⻚

    • From & Size(使用最多,要避免深度分页) / Search After / Scroll API

    • 要避免深度分⻚,对于数据导出等操作,可以使⽤ Scroll API

2.3 回顾总结:Elasticsearch 的分布式模型

  • ⽂档的分布式存储

    • ⽂档通过 hash 算法, route 并存储到相应的分⽚(也就是主分片不能改)
  • 分⽚及其内部的⼯作机制

    • Segment / Transaction Log / Refresh / Merge
  • 分布式查询和聚合分析的内部机制

    • Query Then Fetch;IDF 不是基于全局,⽽是基于分⽚计算,因此,数据量少的时候,算分不准

    • 增加 “shard_size” 可以提⾼ Terms 聚合的精准度

2.4 回顾总结:数据建模及重要性

  • 数据建模

    • ES 如何处理管理关系 / 数据建模的常⻅步骤 / 建模的最佳实践
  • 建模相关的⼯具

    • Index Template / Dynamic Template(字段映射) / Ingest Node(数据预处理) / Update By Query (数据重建)/ Reindex / Index Alias(提高可维护性)
  • 最佳实践

    • 避免过多的字段 / 避免 wildcard 查询(*开头的通配符查询) / 在 Mapping 中设置合适的字段(看官方文档)

demo:

DELETE test
#es做索引也会使用分词器:把内容分成小写
PUT test/_doc/1
{
  "content":"Hello World"
}

#match 会分词 
POST test/_search
{
  "profile": "true",
  "query": {
    "match": {
      "content": "Hello World"
    }
  }
}
#match 会分词 
POST test/_search
{
  "profile": "true",
  "query": {
    "match": {
      "content": "hello world"
    }
  }
}
#match对.keyword转换为term 
POST test/_search
{
  "profile": "true",
  "query": {
    "match": {
      "content.keyword": "Hello World"
    }
  }
}
#.keyword 不会做分词处理,查不到
POST test/_search
{
  "profile": "true",
  "query": {
    "match": {
      "content.keyword": "hello world"
    }
  }
}
#term不做分词,数据在content上是小写的分词,查不到
POST test/_search
{
  "profile": "true",
  "query": {
    "term": {
      "content": "Hello World"
    }
  }
}
#term不做分词,查不到
POST test/_search
{
  "profile": "true",
  "query": {
    "term": {
      "content": "hello world"
    }
  }
}
#keyword,能查到。
POST test/_search
{
  "profile": "true",
  "query": {
    "term": {
      "content.keyword": "Hello World"
    }
  }
}

测试

  • 判断题:⽣产环境中,对索引使⽤ Index Alias 是⼀个好的实践(正确,)

  • 在 Terms 聚合分析中,有哪些⽅法可以提⾼查询的精准度(数据量小1,主分片1。数据量大:设置shardsie)

  • 如何通过聚合分析知道,每天⽹站中的访客来⾃多少不同的 IP(Cardinality )

  • 请描述 “multi_match” 查询中 “best_field”的⾏为(单个字段算分最高的结果)

  • 对搜索结果分⻚时,所采⽤的两个参数(from,size)

  • 判断题:使⽤ Scroll API 导出数据时,即使中途有新的数据写⼊,这些数据也能被导出(错,搜索结果有快照,形成快照后新插入数据不会输出)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
视频资源太大,这里提供百度云链接: 资源包括项目源码和所需的数据: 01-1 _课程导学~1.mp4 01-2 说明和建议~1.mp4 02-1 -术语介绍 .mp4 02-2 Document介绍.mp4 02-3 index介绍 .mp4 02-4 -restapi介绍 .mp4 02-5 -index_api .mp4 02-6 -document_api.mp4 03-01 -书的目录与索引.mp4 03-02 -正排与倒排索引简介.mp4 03-03 -倒排索引详解.mp4 03-04 -分词介绍.mp4 03-05 -analyze_api .mp4 03-06 -自带分词器.mp4 03-07 -中文分词.mp4 03-08 -自定义分词之CharacterFilter .mp4 03-09 自定义分词之Tokenizer .mp4 03-10 -自定义分词之 TokenFilter .mp4 03-11 -自定义分词.mp4 03-12 -分词使用说明 .mp4 03-13 -官方文档说明.mp4 04-01 -mapping简介.avi 04-02 -自定义 mapping .avi 04-03 -mapping演示.avi 04-04 -copy_to参数说明.avi 04-05 -index参数说明.avi 04-06 -index_options参数说明.avi 04-07 -mapping文档说明.avi 04-08 -数据类型.avi 04-09 -dynamic-mapping简介.avi 04-10 -dynamic日期与数字识别.avi 04-11 -dynamic-template简介.avi 04-12 -自定义mapping的建议.avi 04-13 -索引模板.mp4.avi 05-01 -SearchAPI概览.avi 05-02 -URISearch详解与演示.avi 05-03 -QueryDSL简介.avi 05-04 -字段类查询简介及match-query.avi 05-05 -相关性算分.mp4.avi 05-06 -match-phrase-query_音频.mp4.avi 05-07 -query-string-query.avi 05-08 -simple-query-string-query.avi 05-09 -term-terms-query.avi 05-10 -range-query.avi 05-11 -复合查询介绍及ConstantScore.avi 05-12 -bool-query.avi 05-13 -count-and-source-filtering.avi 06-01 -分布式介绍及cerebro.avi 06-02 -构建集群.avi 06-03 -副本与分片.avi 06-04 -两个问题.avi 06-05 -集群状态.avi 06-06 -故障转移.mp4.avi 06-07 -文档分布式存储.avi 06-08 -脑裂问题.avi 06-09 -shard详解.avi 07-1 -Query-Then-Fetch.avi 07-2 -相关性算分.avi 07-3 -sorting-doc-values-fielddata.avi 07-4 -分页与遍历-fromsize.avi 07-5 分页与遍历.avi 07-6 分页与遍历-search_after.avi 07-7 文档说明.mp4.avi 08-1 -聚合分析简介.avi 08-2 -metric聚合分析.avi 08-3 -bucket聚合分析.avi 08-4 -bucket和metric聚合分析.avi 08-5 -pipeline聚合分析.avi 08-6 -作用范围.avi 08-7 -排序.avi 08-8 -原理与精准度问题.avi 08-9 -文档说明.avi 09-1 -数据建模简介.avi 09-2 -ES数据建模配置相关介绍.avi 09-3 -ES数据建模实例.mp4.avi 09-4 -Nested_Object.avi 09-5 -Parent_Child.avi 09-6 -nested_vs_parent_child.avi 09-7 -reindex.avi 09-8 其他建议.avi 10-1 生产环境部署建议.avi 10-2 写性能优化.avi 10-3 读性能优化.avi 10-4 如何设定shard数.avi 10-5 xpack监控功能介绍.avi 11-1 入门及架构简介.avi 11-2 -Life_of_an_Event.avi 11-3 -queue简介.avi 11-4 -线程简介.avi 11-5 配置简介.avi 11-6 多实例运行.avi 11-7 pipeline配置简介.avi 12-01 input插件详解及glob讲解.avi 12-02 -codec插件详解.avi 12-03 filter插件简介及date插件讲解.avi 12-04 filter插件之grok简介(上).avi 12-05 filter插件之grok简介(下).avi 12-06 filter插件之dissect讲解.avi 12-07 filter插件之mutate 讲解.avi 12-08 filter插件之 json讲解.avi 12-09 filter 插件之geoip和ruby 讲解.avi 12-10 output插件简介.avi 12-11 文档说明.avi 123.bat 13-1 -Logstash实战建议.avi 13-2 -实战之apacheLogs(上).avi 13-3 实战之apacheLogs(下).avi 13-4 实战之csv.avi 13-5 监控运维建议.avi 14-1 beats简介.avi 14-2 Filebeat_Demo.avi 14-3 Filebeat 简介及流程介绍.avi 14-4 Filebeat常见架构及ingest_node介绍.avi 14-5 Filebeat_Module简介.avi 15-1 -简介.avi 15-2 -Module简介.avi 15-3 -实战.mp4.avi 16-1 1-简介(1).avi 16-1 1-简介(1).avi.baiduyun.downloading 16-1 1-简介.avi 16-2 2-实战.avi 17-1 1-Heartbeat.avi 17-2 2-Community_beats.avi 18-1 -配置与线上部署建议.avi 18-2 -Index_Pattern_Objects_Settings使用.avi 19-1 -导入数据.avi 19-2 -Discover实战.avi 20-1 -可视化简介.avi 20-2 -Basic_Charts_介绍.avi 20-3 -Basic_Charts_其他说明.avi 20-4 -Data图表介绍.avi 20-5 -Map图表介绍.avi 20-6 -Timelion介绍.avi 20-7 -VisualBuilder介绍.avi 20-8 -other图表介绍.avi 20-9 -Dashboard介绍.avi 21-1 -项目介绍.avi 21-2 项目实战.avi 22-1 介绍和数据导入.avi 22-2 -实战.avi 23-1 项目简介.avi 23-2 实战(上).avi 23-3 实战(下).avi 24-1 课程总结.avi codes.zip project.zip 文件树.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值