2014-02-14 12 views
7

Ich möchte mithilfe von Nest das Feld für den Vervollständigungsvorschlag in einen Index einfügen. Nach diesen ElasticSearch blog post about implementing a completion field Lesen ich sehen Sie die folgenden Eigenschaften haben:Verwenden von Nest Client zum Laden von Abschlussfeldern in Elasticsearch

  • Array von Eingängen
  • einzigen Ausgang
  • Gewicht
  • Nutzlast

ich, dass diese Daten zu laden, gehe davon aus, in ein Index Ich muss eine Entität in mein Suchobjekt aufnehmen, die die obigen Felder enthält?

Antwort

8

ich in der Lage war schließlich durch die Schaffung von mehreren Klassen der Fertigstellung Feld zu laden, und im Anschluss an den FluentMappingFullExample Unit-Test, insbesondere den folgenden Teil:

    .Completion(s=>s 
        .Name(p=>p.Name.Suffix("completion")) 
        .IndexAnalyzer("standard") 
        .SearchAnalyzer("standard") 
        .MaxInputLength(20) 
        .Payloads() 
        .PreservePositionIncrements() 
        .PreserveSeparators() 
       ) 

Für meine Suche Entitätstyp, hat ich ein Feld mit dem Namen vorschlagen und machte es vom Typ CompletionField.

public class CompletionField 
{ 
    public CompletionField() 
    { 
     Input = new List<string>(); 
    } 

    public List<string> Input { get; set; } 
    //public string Output { get; set; } 
    public int Weight { get; set; } 
    public Payload Payload { get; set; } 
} 

public class Payload 
{ 
    public int ID { get; set; } 
} 

Nachdem ich meine Entität aus der DB unter Verwendung dapper geladen, I geschleift dann über die Ergebnisse und geladen meinen Abschluss Feld mit den entsprechenden Eingängen, die ich wollte. Ich konnte dann erfolgreich die Suggest API aufrufen und diese Daten abfragen. Ich hoffe, das hilft jemand anderem.

+4

Haben das gleiche Problem wie Sie. Wie haben Sie die Objekte indexiert? Können Sie Ihre Indexabfrage und Suchabfrage posten? Vielen Dank –

+0

Ihre Probe sieht sehr irrelevant aus. Ich kann keine Verbindung finden. Wenn Sie den Abschluss indizieren, definieren Sie seinen Typ nicht als Abschlussfeld. Wofür verwenden Sie das completionField? Ich denke du wolltest oder hättest so etwas tun sollen https://github.com/elastic/elasticsearch-net-example#part-5-suggestions – batmaci

Verwandte Themen