如何向 NEST 添加多个字段?

How can add several fields to NEST?

我用的是Generic和Reflection,所以主要问题是添加几个字段。当我将此代码与一个字段一起使用时它可以,但是当我尝试以某种方式添加新字段时它不起作用:

  public static ISearchResponse<T> PartSearch<T>(ElasticClient client, string query, List<string> fieldList = null, int from = 0, int size = 1) where T : class
    {
        if (client == null)
            throw new ArgumentNullException();
        if (String.IsNullOrEmpty(query))
            throw new ArgumentNullException();
        ISearchResponse<T> results;
        if (fieldList == null)
        {
            results = client.Search<T>(q =>
                q.Query(q =>
                    q.QueryString(qs => qs.Query(query)) 
                ).From(from).Size(size)
            );
        }
        else
        {
            results = client.Search<T>(q =>
                 q.Query(q => q
                     .QueryString(qs =>
                     {   
                         //This place where i try to add several fields
                         List<Field> fildArray = new List<Field>(); 
                         foreach (var arg in fieldList)
                         {
                             var fieldString = new Field(typeof(T).GetProperty(arg));
                             fildArray.Add(fieldString); 
                         }

                         qs.Fields(f => f.Field(fildArray)); 

                         qs.Query(query);

                         return qs;
                     })
                 ).From(from).Size(size)
             );

        }

        return results;
    }

问题出在一个 QueryString 参数中 Lenient: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html

通过将其设置为 True 来解决此问题。

我使用 Lenient() 创建了一个示例,可以帮助您解决问题:

https://github.com/hgmauri/elasticsearch-with-nest/blob/master/src/Sample.Elasticsearch.Domain/Abstractions/NestExtensions.cs