【问题标题】:Mapping with Elasticsearch使用 Elasticsearch 进行映射
【发布时间】:2021-09-07 20:28:04
【问题描述】:

当尝试从 ElasticSearch 读取某些字段时,我注意到如果我不包含文本属性,那么它不会将变量名称映射到该字段。它将读取该特定字段的空值。假设我在 ES 中有一个名为 ValueId 的字段,类型为 text。在我的模型课中,我有public string ValueId {get; set;}ValueId 应该有该变量的值,但是当我不添加 Elasticsearch 属性时,即 [Text(Name = "ValueId")] 它返回 null。

现在,如果我有以下内容,那么它将返回该变量的值。

[Text(Name = "ValueId")]
public string ValueId {get; set;}

我的猜测是因为驼色外壳,对吗?

另一方面,有没有一种方法可以设置该属性名称(Name = "") 动态?就像创建一个方法来执行此操作一样。

【问题讨论】:

    标签: c# elasticsearch console-application nest


    【解决方案1】:

    使用 NEST Automapping,它总能帮助我解决这些问题:https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/auto-map.html

    另外一点是用 NEST 正确配置你的 elastic,下面的例子展示了正确的配置方式:

    public static void AddElasticsearch(this IServiceCollection services, IConfiguration configuration, bool configureDefaultQuery = true)
    {
        var defaultIndex = configuration["ElasticsearchSettings:defaultIndex"];
        var basicAuthUser = configuration["ElasticsearchSettings:username"];
        var basicAuthPassword = configuration["ElasticsearchSettings:password"];
    
        var settings = new ConnectionSettings(new Uri(configuration["ElasticsearchSettings:uri"]));
    
        if (!string.IsNullOrEmpty(defaultIndex))
            settings = settings.DefaultIndex(defaultIndex);
    
        if (!string.IsNullOrEmpty(basicAuthUser) && !string.IsNullOrEmpty(basicAuthPassword))
            settings = settings.BasicAuthentication(basicAuthUser, basicAuthPassword);
    
        var client = new ElasticClient(settings);
    
        services.AddSingleton<IElasticClient>(client);
    }
    

    Se mesmo assim continuar vindo nulo,experimente utiliar a configuração:settings.DefaultFieldNameInferrer(p =&gt; p);

    更多细节可以在这个示例项目中找到:https://github.com/hgmauri/elasticsearch-with-nest

    【讨论】:

      猜你喜欢
      • 2016-02-21
      • 2012-07-11
      • 1970-01-01
      • 1970-01-01
      • 2020-06-15
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      相关资源
      最近更新 更多