我正在使用elasticsearch .net NEST库来索引数据和文件内容。 我使用mapper-attachement索引文件内容。 弹性搜索将文件内容存储在base64 encoaded中。 我已经将文件存储在文件系统中,所以我不想再将elasticsearch存储起来。
是否可以使用.Net NEST索引文件内容而不实际存储文件内容。
我尝试了什么: 试图设置 [ElasticProperty(Type = FieldType.Attachment,Store = false)] 但仍然弹性搜索存储内容并增加索引大小
答案 0 :(得分:0)
默认情况下,字段值为indexed以使其可供搜索,但不会存储。
正如here所述。
这意味着在大多数情况下,通常不需要设置Store = false
。您仍然在Elasticsearch中看到该文档的原因是:
_source
字段包含在索引时传递的原始JSON文档正文。
为了避免这种情况,你需要做的是disable the _source
field,虽然通常建议不这样做,所以请确保这是你想要的,并阅读“在禁用_source字段之前思考”一节。
有多种方法可以禁用_source
字段(模板,映射),但假设您使用NEST
创建索引,则可以执行以下操作(我将假设鉴于您尝试使用的属性,您正在使用NEST
的v1.x:
client.CreateIndex(
idxDescriptor => idxDescriptor.AddMapping<TModel>(
mappingDescriptor => mappingDescriptor.SourceField(source => source.Enabled(false))))
注意:如果您这样做,索引大小仍会增加,因为需要对字段编制索引才能对其进行搜索。