Ответ 1
Если я правильно понимаю ваше намерение, объект Entity
будет иметь в нем только вложенные объекты, не так ли?
Вы можете попытаться использовать динамическое сопоставление функции elasticsearch для объекта сущности. Я предполагаю, что Entity является корневым объектом.
curl -X POST localhost:9200/myindex/entity/_mapping
{"dynamic_templates": [
{"nested_data_template": {
"mapping": {
"type": "nested" },
"match_mapping_type": "object",
"path_match": "*" }}]}
path_match: *
и match_mapping_type: object
означают, что для всех имен полей с объектом в качестве значения используется вложенное сопоставление типов.
Используя NEST и Fluent API, вы можете использовать следующий API. IntelliSense проведет вас как построить сопоставление выше.;)
descriptor.DynamicTemplates(DynamicTemplatesDescriptor<Entity>)
Каждый раз, когда появляется новое свойство, соответствующее этому шаблону, elasticsearch обновляет отображение на основе динамического сопоставления. Через некоторое время ваше сопоставление будет выглядеть следующим образом:
{
"entity": {
"mappings": {
"entity": {
"dynamic_templates": [
{
"nested_data_template": {
"mapping": {
"type": "nested"
},
"match_mapping_type": "object",
"path_match": "*"
}
}
],
"properties": {
"test": {
"type": "nested",
"properties": {
"test": {
"type": "string"
},
"another_property": {
"type": "string"
}
}
},
"test1": {
"type": "nested",
"properties": {
"test": {
"type": "string"
}
}
}
}
}
}
}
}
Надеюсь, это поможет!