Elasticsearch:文档关系与搜索操作全解析
1. 文档关系处理
在处理文档关系时,Elasticsearch 提供了嵌套(Nested)和父子(Parent - Child)两种类型来处理关系型数据。下面是使用 Java 进行查询的示例代码:
SearchResponse response = client.prepareSearch("twitter_parent_child")
.setTypes("tweets")
.setQuery(QueryBuilders
.hasParentQuery(parentType, QueryBuilders.rangeQuery("followers_count")
.gt(200))).execute().actionGet();
在使用这两种文档关系类型时,需要考虑它们的优缺点,具体对比如下:
| 类型 | 优点 | 缺点 |
| — | — | — |
| 嵌套(Nested) | 存储在同一个 Lucene 块中,读写查询性能更快,读取嵌套文档比父子文档更快 | 更新嵌套文档中的单个字段会导致整个文档重新索引,对于大文档成本高,适合不经常变化的数据 |
| 父子(Parent - Child) | 子文档更新不影响父文档和其他子文档,可能节省大文档的索引成本 | 读写查询性能略低于嵌套类型,若不使用 doc_values,会有额外内存开销 |
2. Elasticsearch 搜索类型
Elasticsearch
超级会员免费看
订阅专栏 解锁全文
1025

被折叠的 条评论
为什么被折叠?



