我在ElasticSearch中创建了两个索引,它们具有完全相同的映射,除了一个参数,其中一个映射将dense_vector
从_source
中排除,而另一个没有:
"mappings": {
"_source": {"excludes": ["title_vector"]},
"properties": {
...}
然后我将相同的1_000文档索引到两个索引中:
vector_in_source 1000 0 21.5mb 21.5mb
no_vector_in_source 1000 0 21.2mb 21.2mb
当我奔跑
curl --location --request POST 'http://127.0.0.1:9200/index_name/_disk_usage?run_expensive_tasks=true
在两个索引上,我发现:
- 在源中的向量索引存储
dense_vector
作为源中的普通浮点数,正如我所期望的 - 索引不存储密集向量BUT它创建了一个名为
_recovery_source
的新字段,其大小等于作为普通浮点数存储的1000个1024 dim向量所占用的大小。
所以,即使我明确地排除密集向量从存储在弹性,他们仍然只是存储在一个新的领域!
所以我想知道这个字段是什么,我可以禁用它至少排除dense_vectors从存储在这个字段?
PR 85649解释了(临时)_recovery_source
字段的存在以及它的用途,即创建一个最佳恢复的合成源字段。
长话短说:你不用担心。