摘要:
elasticsearch--读写原理及调优 Es写入过程 1.1 ES支持四种对文档的数据写操作create: 如果在PUT数据的时候当前数据已经存在,则数据会被覆盖,如果在PUT的时候加上操作类型create,此时如果数据已存在则会返回失败,因为已经强制指定了操作类型为create,ES就不会再 阅读全文
摘要:
elasticsearch--并发问题 悲观锁 乐观锁 悲观锁对于一个共享数据,某个线程访问到这个数据的时候,会认为这个数据随时有可能会被其他线程访问而造成数据不安全的情况,因此线程在每次访问的时候都会对数据加一把锁。这样其他线程如果在加锁期间想访问当前数据就只能等待,也就是阻塞线程了。 乐观锁乐观 阅读全文
摘要:
elasticsearch--相关度评分算法 相关度评分 TF-IDF算法 BM25算法 SHARD LOCAL IDF Relevance Score 精准控制频分和干预排序 1、相关度评分:score 1.1 相关度31.1.1 相关性概念相关性指的是召回结果和用户搜索关键词的匹配程度,也就是和 阅读全文
摘要:
1、正排索引 1.1 正排索引(doc values )和倒排索引 概念:从广义来说,doc values 本质上是一个序列化的 列式存储 。列式存储 适用于聚合、排序、脚本等操作,所有的数字、地理坐标、日期、IP 和不分词( not_analyzed )字符类型都会默认开启,不支持text和ann 阅读全文
摘要:
1、多字段检索 1.1 多字段检索(multi_match)是啥? 概念:多字段检索,是组合查询的另一种形态,考试的时候如果考察多字段检索,并不一定必须使用multi_match,使用bool query,只要结果正确亦可,除非题目中明确要求(目前没有强制要求过) 语法: GET <index>/_ 阅读全文
摘要:
1、什么是深度分页(Deep paging)? 1.1 ES中from+size分页 分页问题是Elasticsearch中最常见的查询场景之一,正常情况下分页代码如实下面这样的: GET order_2290w/_search { "from": 0, "size": 5 } 输出结果如下图: 很 阅读全文
摘要:
Elasticsearch核心概念 什么是搜索引擎? 全文搜索引擎 自然语言处理(NLP)、爬虫、网页处理、大数据处理 如谷歌、百度、搜狗、必应等等 垂直搜索引擎 有明确搜索目的的搜索行为 各大电商网站、OA、站内搜索、视频网站等 搜索引擎应该具备哪些要求? 面向海量数据,如何达到“搜索引擎”级别的 阅读全文
摘要:
elasticsearch--分布式原理 1、单机服务有哪些问题 单机服务性能有限 可用性差 维护不便 2、分布式的好处 高可用性:集群可容忍部分节点宕机而保持服务的可用性和数据的完整性 易扩展:当集群的性能不满足业务要求时,可以方便快速的扩容集群,而无需停止服务。 高性能:集群通过负载均衡器分摊并 阅读全文
摘要:
elasticsearch-索引的批量操作 批量查询和批量增删改 批量查询 GET /_mget 批量写入: OST /_bulk POST /<index>/_bulk {"action": {"metadata"}} {"data"} 注意: bulk api对json的语法有严格的要求,除 阅读全文
摘要:
elasticsearch-模糊查询和智能搜索推荐 prifix前缀搜索 wildcard通配符 regexp正则表达式 fuzzy模糊查询 match_phrase_prefix短语前缀 以及前缀中缀后缀的搜索优化方案(ngram edge gram) 阅读全文
摘要:
数据建模 嵌套类型:Nested nested属于object类型的一种,是Elasticsearch中用于复杂类型对象数组的索引操作。Elasticsearch没有内部对象的概念,因此,ES在存储复杂类型的时候会把对象的复杂层次结果扁平化为一个键值对列表。 比如: PUT my-index-000 阅读全文
摘要:
脚本查询 概念 Scripting是Elasticsearch支持的一种专门用于复杂场景下支持自定义编程的强大的脚本功能,ES支持多种脚本语言,如painless,其语法类似于Java,也有注释、关键字、类型、变量、函数等,其就要相对于其他脚本高出几倍的性能,并且安全可靠,可以用于内联和存储脚本。 阅读全文