2016-01-15 2 views
0

В 2.0 alpha для гнезда Я изо всех сил пытаюсь установить DefaultFieldNameInferrer на camelCase.Elasticsearch - Имя поля по умолчанию Inferrer

После выяснить, как просмотреть «тело запроса» (по явной форме установки DisableDirectStreaming к истинным, несмотря на то, по умолчанию, правда ...), я могу видеть, что для запроса как:

...fil.Bool(b2 => b2.Must(m => m.Term(t => t.DomainName, host))))...

он посылает DomainName с Captial D:

...{"term":{"DomainName":{"value":"example.com"}}}]}...

Version 1.7 всегда посылал верблюжьего и, следовательно, мои отображения являются все верблюд Случай.

Как я могу изменить это на camelCase?

Редактировать

соединения:

ElasticClient = new ElasticClient 
      (new ConnectionSettings(new Uri(WebConfigMethods.GetElasticSearchUri())).MapDefaultTypeIndices 
       (new ElasticsearchMethods().ElasticSearchDefaultTypeIndices) 
                        .DisableDirectStreaming(true) 
                        .DefaultFieldNameInferrer 
       (s => 
        { 
         if (string.IsNullOrEmpty(s)) 
          return s; 

         if (!char.IsUpper(s[0])) 
          return s; 

         string camelCase = char.ToLower(s[0], CultureInfo.InvariantCulture) 
               .ToString(CultureInfo.InvariantCulture); 
         if (s.Length > 1) 
          camelCase += s.Substring(1); 

         return camelCase; 
        })); 

Запрос:

var result = elasticClient.Search<ADocType> 
       (s => s.Take(1) 
         .Query 
          (qu => 
          qu.Bool 
           (b => b.Filter(fil => fil.Bool(b2 => b2.Must(m => m.Term(t => t.DomainName, host))))))); 

Что гнездо фактически посылает:

{"size":1,"query":{"bool":{"filter":[{"bool":{"must":[{"term":{"DomainName":{"value":"example.com"}}}]}}]}}} 
+0

Это должно помочь: http://stackoverflow.com/questions/27282865/how-to-disable-camel-casing-elasticsearch-field-names-in-nest/27296871#27296871 – Val

+0

@Val Я попытался переопределить его, как видно из редактирования ... Не повезло ....: S –

+0

Как насчет использования [ElasticAttibute (Name = "") или JsonProperty (Name = "")] (http: //nest.azurewebsites. сеть/гнездо/индекс-типа inference.html)? – Val

ответ

1

Просто Аддин g это как ссылка в случае, если кто-нибудь столкнется с этим вопросом позже.

Github issue reported here.

См. Комментарий «Mpdreamz».

Я вижу два варианта:

  1. реализует подкласс нашего JsonNetSerailizer, который возвращает то, что вам нужно для CreatePropertyName

  2. Добавить крюк в начале потока решительности каскадного. например, другая функция для соединений.

Смежные вопросы