Я столкнулся с некоторыми проблемами, пытаясь использовать статистические аспекты в моих документах в Elastic Search. Это привело к следующим сообщениям в группе поиска Elastic Search google - см. https://groups.google.com/forum/#!topic/elasticsearch/wNjrnAC_KOY. Я попытался применить рекомендацию в ответе об использовании типов Nested в документе, чтобы предоставить различные суммы в свойстве коллекций (см. https://groups.google.com/forum/#!topic/elasticsearch/wNjrnAC_KOY)Как использовать вложенные типы с клиентом NEST для Elastic Search
То есть у меня было бы много экземпляров MyType с коллекцией MyItem. В некоторых коллекциях MyItem будут экземпляры с соответствующими суммами, то есть первый документ может иметь два экземпляра myitem, оба с количеством в 100. Без вложенных типов я не считаю, что статистические аспекты будут агрегировать каждую сумму, поскольку они не уникальны.
Итак, я создал структуру документа (как показано ниже) и заполнил свой индекс. Перед заполнением моего индекса я использовал следующий код, чтобы создать вложенный документ.
client.MapFromAttributes<Page>();
[ElasticType(Name="page", DateDetection = true, NumericDetection = true, SearchAnalyzer = "standard",IndexAnalyzer = "standard")]
public class MyType
{
public int TypeId { get; set; }
public string Name { get; set; }
public ANotherType AnotherProperty { get; set; }
public DateTime Created { get; set; }
[ElasticProperty(Type = FieldType.nested, Name="mycollection")]
public List<MyItem> MyItems { get;
}
public class MyItem
{
public decimal Amount {get;set;}
}
Однако, когда я запускаю следующий запрос через гнездо api, я не получаю никаких результатов.
query.Index("pages")
.Type("page")
.From(0)
.Size(100)
.FacetStatistical("TotalAmount", x => x.Nested("donations")
.OnField("amount")));
Более Я также попытался следующим через Chrome плагин Почтальон:
{
"facets": {
"test": {
"statistical": {
"field": "amount"
},
"nested": "mycollection"
}
},
"size":0
}'
и получить ответ, который отмечает:
»..facet вложенного пути [MyCollection] является не вложенных ".
Любые мысли об этом были бы замечательными.
Tim
Спасибо Martijn. Сегодня утром мне удалось заставить его работать с оригинальным решением. Я не смотрел ответ от client.MapFromAttributes(), который дул. Причины были ясны после того, как я обратил внимание на ответ. Вложенные сопоставления не вступили в силу, потому что я бы установил свойство строки, которое не анализировалось через атрибут, и не квалифицировало свойство int как отображение int. Однажды я решил это. Это сработало. Я попробую ваше решение, хотя если это лучший способ сопоставить. Еще раз спасибо. –
NestedObject не входит в состав API теперь в текущей версии NEST. Есть ли альтернативный способ сделать это сейчас? – JamieGaines