elasticsearch中的索引文件内容,而不将实际内容存储在base64中

时间:2017-01-12 12:51:43

标签: c# elasticsearch nest elasticsearch-plugin

我正在使用elasticsearch .net NEST库来索引数据和文件内容。 我使用mapper-attachement索引文件内容。 弹性搜索将文件内容存储在base64 encoaded中。 我已经将文件存储在文件系统中,所以我不想再将elasticsearch存储起来。

是否可以使用.Net NEST索引文件内容而不实际存储文件内容。

我尝试了什么: 试图设置 [ElasticProperty(Type = FieldType.Attachment,Store = false)] 但仍然弹性搜索存储内容并增加索引大小

1 个答案:

答案 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))))

注意:如果您这样做,索引大小仍会增加,因为需要对字段编制索引才能对其进行搜索。