2017-01-12 11 views
0

存储的实际内容,我使用elasticsearch .NET NEST库索引数据和文件内容。 我用mapper-attachchement来索引文件内容。 弹性搜索将文件内容存储在base64 encoaded中。 我已经有文件存储在文件系统上,所以我不想elasticsearch再次存储。索引文件的内容,而不以base64

是否有可能索引文件的内容而实际上不存储文件的内容,使用的.Net窝。

我的尝试: 试图设置 [ElasticProperty(类型= FieldType.Attachment,商店= FALSE)] 但还是弹性搜索存储的内容,增加了索引的大小

+0

什么Elasticsearch的版本,您使用的是什么版本的巢?我写了一篇关于使用Elasticsearch和NEST for 5.x来处理附件的博客文章,希望能够帮助:https://www.elastic.co/blog/the-future-of-attachments-for-elasticsearch-and-dotnet –

回答

0

默认情况下,场值indexed让他们搜索的,但它们不是存储

如解释here

这意味着在大多数情况下,通常不需要设置Store = false。你看到的仍然是在文档中Elasticsearch的原因是:

_source字段包含在索引时间通过原始JSON文件体。

你需要做的,以避免为disable the _source field,尽管它通常建议不要这样做,所以一定要确保这是你想要什么,阅读什么节“禁用_source场三思而后行”。

有多种方式来禁用_source场(模板,映射),但假设你正在创建使用NEST索引,你可以做这样的事情(我要你使用1.x版推定的NEST给出的属性是否尝试过使用):

client.CreateIndex(
    idxDescriptor => idxDescriptor.AddMapping<TModel>(
     mappingDescriptor => mappingDescriptor.SourceField(source => source.Enabled(false)))) 

注意:如果你这样做,因为该领域需要以索引为他们搜索指数的大小仍会增加。

+0

Eitamal我已经试过这段代码,但是文件内容存储在elasticsearch节点中。我想要的不是将实际的文件内容存储到elasticsearch节点,我已经将该文件存储在我的系统中。 –

相关问题