对象和 Nested 对象具有每次更新,需要重新索引整个对象(包括根对象和嵌套对象)的局限性。ES 提供了类似关系型数据库中 join 的实现。使⽤ join 数据类型实现,可以通过维护 Parent / Child 的关系,从⽽分离两个对象,满足:
- ⽗⽂档和⼦⽂档是两个独⽴的⽂档
- 更新⽗⽂档⽆需重新索引⼦⽂档。⼦⽂档被添加,更新或者删除也不会影响到⽗⽂档和其他的⼦⽂档
笨鸟先飞
对象和 Nested 对象具有每次更新,需要重新索引整个对象(包括根对象和嵌套对象)的局限性。ES 提供了类似关系型数据库中 join 的实现。使⽤ join 数据类型实现,可以通过维护 Parent / Child 的关系,从⽽分离两个对象,满足:
相关阅读:https://www.elastic.co/guide/en/elasticsearch/reference/7.4/query-dsl-nested-query.html
真实世界中有很多重要的关联关系,比如银⾏账户有多次交易记录或者目录⽂件有多个⽂件和⼦⽬录。
范式化设计 (Normalization) 的主要目标是“减少不必要的更新”,数据库越范式化,就需要 Join 越多的表,因此⼀个完全范式化设计的数据库会经常⾯临 “查询缓慢”的问题。范式化简化了更新,但是数据“读”取操作可能更多。
相关阅读:https://www.elastic.co/guide/en/elasticsearch/reference/7.4/search-aggregations-pipeline.html
Pipeline Aggregation ⽀持对聚合分析的结果,再次进⾏聚合分析。Pipeline 的分析结果会输出到原结果中,根据位置的不同,分为两类:
相关阅读:https://www.elastic.co/guide/en/elasticsearch/reference/7.4/search-suggesters.html
现代的搜索引擎,⼀般都会提供 Suggest as you type 的功能。以帮助⽤户在输⼊搜索的过程中,进⾏⾃动补全或者纠错。通过协助⽤户输⼊更加精准的关键词,提⾼后续搜索阶段⽂档匹配的程度。