Index = FieldIndexOption.No vs OptOut =true?

Index = FieldIndexOption.No vs OptOut =true?

有什么区别
[ElasticProperty(OptOut =true)]

[ElasticProperty(Index = FieldIndexOption.No)]

根据回答 here,据说 optout = true 没有索引 属性。我以为 Index = FieldIndexOption.No 正在这样做。

为了便于解释,让我们考虑下面的 class:

[ElasticType(Name = "blog")]
public class Blog
{
    [ElasticProperty(Name = "id")]
    public int Id { get; set; }

    [ElasticProperty(Name = "title", Index = FieldIndexOption.No)]
    public string Title { get; set; }

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

当您索引 class Blog 的对象时,字段 Comments 的值将被完全忽略。简单地说,Elasticsearch 对该领域没有知识Comments。它仅供您的客户端应用程序使用,可能用于某些 book-keeping 目的。 blog类型的映射定义如下:

{
    "mappings": {
        "blog": {
            "properties": {
                "id": {
                    "type": "integer"
                },
                "title": {
                    "type": "string",
                    "index": "no"
                }
            }
        }
    }
}

请注意 title 字段存在。如果标记为 Index = FieldIndexOption.No,您将无法在 title 字段中搜索值,但您当然可以在搜索请求的匹配文档中检索它的值。希望这能回答您的问题。