Elasticsearch - 更新非索引字段
Elasticsearch - update non indexed field
我需要在我的网站上提供搜索功能,并且我打算为此目的使用 Elastic Search。
我的字段 A 保持不变,字段 B 每天变化一次,字段 C 每分钟变化一次。字段 C 没有索引(索引:"no"),而字段 A 和字段 B 有索引。
问题:每当我在 Elastic Search 中更改字段 C(未编入索引)时,整个文档都会更新(经历检索-更改-重新索引过程)吗?鉴于字段 C 的更新频率(其他选项可以是 MongoDB 文本搜索),弹性搜索是否是搜索字段 A 和 B 的好选择?
MongoDB 是一个数据库,而 Elasticsearch 是一个搜索引擎。
在操纵这两个系统时,它真的变得有意义了:MongoDB 完全是关于数据的灵活性,而 Elasticsearch 有一点更谨慎和有序的方法。
Elasticsearch 是文本搜索引擎库 Lucene 的包装器。从原理上讲,Lucene 管理低级操作,如索引和数据存储,而 Elasticsearch 带来了一些数据抽象级别以适应 JSON 可能性,HTTP REST API 并大大简化了集群的构成。
聚合
Elasticsearch的请求系统非常同质化,在处理聚合的时候就一目了然。
MongoDB 有一个专用的聚合管道,通过 [{"$match": }, {"$group": }, {"$sort": }, ...] 阶段定义。
Elasticsearch 聚合完全集成到请求中,
即使请求主体通常比 MongoDB 管道大,感觉也更清晰。
Elasticsearch 与 MongoDB 的强烈不同在于它不是无模式的。
可以在没有比单独的数据更多的信息的情况下索引文档,但是引擎会自动映射字段。索引文档时,
Elasticsearch 为它定义了一个默认映射。一旦定义,就不可能(与 MongoDB 不同)索引另一个具有相同类型但格式不同的文档(例如,在以前的 int 字段中使用字符串)。
Mongodb 在使用默认映射索引的批量插入中比 Elastic Search 更快。
MongoDB 中的文档是可变的,而 Elasticsearch 中的文档是不可变的;我们无法改变它们。相反,如果我们需要更新现有文档,我们会重新索引或替换它。
Updating Document in ElasticSearch
Partial Updating Document in ElasticSearch
Question: Will the whole document get updated (undergo retrieve-change-reindex process) whenever I change Field C (which is not indexed) in Elastic Search? Is Elastic Search a good choice for searching Fields A and B given the update frequency of Field C (other option could be MongoDB Text Search)?
考虑到您的更新频率和 Elastic Search 在发生更改时需要重建文档的行为。我建议去 MongoDB
ElasticSearch是你想提供搜索功能就去的理由
- 自由文本搜索
- 空间搜索
- 分组,聚合
- Json格式
- 基于最著名的索引库 Lucene
如果一个文件没有被索引那么你需要决定你想要存储它的天气吗?就好像一个字段既没有存储也没有索引没有意义,elasticsearch 文档是不可变的,这意味着如果你更新文档,就会创建一个新文档,并且多次更新一个文件会导致同一文档的多个版本,并且需要重新索引,尽管只有一个是活动的但是会给系统带来压力。如果您可以控制正在更新的文档的文档 ID,您可以做的就是用相同的文档 ID 和更新的值一次又一次地插入它
我需要在我的网站上提供搜索功能,并且我打算为此目的使用 Elastic Search。
我的字段 A 保持不变,字段 B 每天变化一次,字段 C 每分钟变化一次。字段 C 没有索引(索引:"no"),而字段 A 和字段 B 有索引。
问题:每当我在 Elastic Search 中更改字段 C(未编入索引)时,整个文档都会更新(经历检索-更改-重新索引过程)吗?鉴于字段 C 的更新频率(其他选项可以是 MongoDB 文本搜索),弹性搜索是否是搜索字段 A 和 B 的好选择?
MongoDB 是一个数据库,而 Elasticsearch 是一个搜索引擎。 在操纵这两个系统时,它真的变得有意义了:MongoDB 完全是关于数据的灵活性,而 Elasticsearch 有一点更谨慎和有序的方法。
Elasticsearch 是文本搜索引擎库 Lucene 的包装器。从原理上讲,Lucene 管理低级操作,如索引和数据存储,而 Elasticsearch 带来了一些数据抽象级别以适应 JSON 可能性,HTTP REST API 并大大简化了集群的构成。
聚合
Elasticsearch的请求系统非常同质化,在处理聚合的时候就一目了然。
MongoDB 有一个专用的聚合管道,通过 [{"$match": }, {"$group": }, {"$sort": }, ...] 阶段定义。 Elasticsearch 聚合完全集成到请求中, 即使请求主体通常比 MongoDB 管道大,感觉也更清晰。
Elasticsearch 与 MongoDB 的强烈不同在于它不是无模式的。 可以在没有比单独的数据更多的信息的情况下索引文档,但是引擎会自动映射字段。索引文档时, Elasticsearch 为它定义了一个默认映射。一旦定义,就不可能(与 MongoDB 不同)索引另一个具有相同类型但格式不同的文档(例如,在以前的 int 字段中使用字符串)。
Mongodb 在使用默认映射索引的批量插入中比 Elastic Search 更快。
MongoDB 中的文档是可变的,而 Elasticsearch 中的文档是不可变的;我们无法改变它们。相反,如果我们需要更新现有文档,我们会重新索引或替换它。
Updating Document in ElasticSearch
Partial Updating Document in ElasticSearch
Question: Will the whole document get updated (undergo retrieve-change-reindex process) whenever I change Field C (which is not indexed) in Elastic Search? Is Elastic Search a good choice for searching Fields A and B given the update frequency of Field C (other option could be MongoDB Text Search)?
考虑到您的更新频率和 Elastic Search 在发生更改时需要重建文档的行为。我建议去 MongoDB
ElasticSearch是你想提供搜索功能就去的理由
- 自由文本搜索
- 空间搜索
- 分组,聚合
- Json格式
- 基于最著名的索引库 Lucene
如果一个文件没有被索引那么你需要决定你想要存储它的天气吗?就好像一个字段既没有存储也没有索引没有意义,elasticsearch 文档是不可变的,这意味着如果你更新文档,就会创建一个新文档,并且多次更新一个文件会导致同一文档的多个版本,并且需要重新索引,尽管只有一个是活动的但是会给系统带来压力。如果您可以控制正在更新的文档的文档 ID,您可以做的就是用相同的文档 ID 和更新的值一次又一次地插入它