Exclude property from being indexed

*爱你&永不变心* 提交于 2019-11-30 08:34:11
Paige Cook

You should be able to set the OptOut value of the ElasticProperty attribute, like the following:

 [ElasticProperty(OptOut = true)]
 public string UnivId { get; set; }

In NEST 2.0 ElasticPropertyAttribute is replaced by per type attributes (StringAttribute, DateAttribute...). I used Ignore parameter to exclude property.

Exemple for string :

[String(Ignore = true)]
public string Id {get;set;}

If using Nest 5.0+, per the docs several ways to ignore a field:


Ignore attribute should work:

using Nest;

[Ignore]
public string UnivId { get; set; }

JsonIgnore can also be used since Newtonsoft.Json is the default serializer used by Nest.


Another way is to use type specific attribute mappings associated with the property. For example, since it's a string then use Text attribute:

[Text(Ignore = true)]
public string UnivId { get; set; }

or if an int use Number:

[Number(Ignore = true)]
public int Id { get; set; }

In addition, instead of using an explicit attribute on the property, the mapping can be ignored using .DefaultMappingFor<... on ConnectionSettings (see docs for more detail)

var connectionSettings = new ConnectionSettings()
    .DefaultMappingFor<Type1>(m => m.Ignore(p => p.UnivId);

However, if want to conditionally ignore an attribute if the value is null then use the following Newtonsoft.Json attribute with null handling setting:

[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string UnivId { get; set; }

I found the above useful when doing partial updates on a doc but wanted to re-use the same C# class for indexing and avoid overwriting existing values in the index.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!