В 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"}}}]}}]}}}
Это должно помочь: http://stackoverflow.com/questions/27282865/how-to-disable-camel-casing-elasticsearch-field-names-in-nest/27296871#27296871 – Val
@Val Я попытался переопределить его, как видно из редактирования ... Не повезло ....: S –
Как насчет использования [ElasticAttibute (Name = "") или JsonProperty (Name = "")] (http: //nest.azurewebsites. сеть/гнездо/индекс-типа inference.html)? – Val