一尘不染

索引= FieldIndexOption.No与OptOut = true?

elasticsearch

之间有什么区别

[ElasticProperty(OptOut =true)]

[ElasticProperty(Index = FieldIndexOption.No)]

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


阅读 263

收藏
2020-06-22

共1个答案

一尘不染

为了便于说明,请考虑以下类:

[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,field的值将Comments被完全忽略。简而言之,Elasticsearch不了解该领域Comments。它只是供您的客户端应用程序使用,可能用于某些簿记目的。类型的映射定义blog如下:

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

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

2020-06-22