Index ein dynamisches Objekt mit NEST

Baue ich eine API-Anwendung, die im wesentlichen ermöglicht es einem Benutzer, um ein Dokument zu erstellen, welche strukturiert sein kann, aber Sie wollen, dass gespeichert wird, in Elasticsearch. Im Grunde genommen bin ich bietet eine einfache Schnittstelle für Benutzer, um Zugriff auf unsere Elasticsearch-Instanz. Ich versuche, dass die Umsetzung so einfach wie möglich. Hier ist, was ich bin den Umgang mit so weit.

Objekt für die zu erwartende Körper:

public class DocumentModel
{
    public string Index { get; set; }
    public string Type { get; set; }
    public string Id { get; set; }
    [ElasticProperty(Type = FieldType.Nested)]
    public dynamic Document { get; set; }
}

Einfache Implementierung:

[HttpPost]
[Route("")]
public IHttpActionResult Post(DocumentModel document)
{
    Uri nodeLocation = new Uri("http://localhost:9200");
    IConnectionPool connectionPool = new SniffingConnectionPool(new List<Uri> { nodeLocation });
    ConnectionSettings settings = new ConnectionSettings(connectionPool);
    ElasticClient esClient = new ElasticClient(settings);

    IIndexResponse result = esClient.Index(document, i => i
        .Index(document.Index)
        .Type(document.Type)
        .Id(document.Id));

    return Ok(result.IsValid);
}

Dies funktioniert gut, aber es enthält den Index, Type und Id in der Quelle. Was ich wirklich mag zu tun ist, geben Sie einfach diese drei Stücke von Informationen, die bei der Indizierung werden aber eigentlich nur index-Dokument.Dokument, das von einem dynamischen Typ. Aber, das scheint zu widersprechen Nest, so wirft es einen Fehler in der IDE und zur compile-Zeit:

"Eine anonyme Funktion oder Methode, die Gruppe kann nicht verwendet werden, als Bestandteil Wert einer dynamisch gebundenen Betrieb"

"Nicht mit einem lambda-Ausdruck als argument an eine dynamisch ausgelöst operation ohne erste casting es zu einer Delegierten-oder expression-Baum-Typ".

Wie kann ich den index nur document.Document? Gibt es eine bessere Art das zu handhaben, eine eingehende JSON-Dokument von unbekannter Struktur, als mit einem dynamischen Typ?

InformationsquelleAutor Ellesedil | 2014-11-04
Schreibe einen Kommentar