2017-06-09 2 views
0

Ich habe versucht, Dokument aus der elastischen Suche auf der Basis von zwei Feldern "SAMAccountName" und "Container" zu holen, aber kein Glück. enter image description hereElastic Search Fetch Genaues Dokument

Was ich will, ist ein Dokument, wo beide Attribute genau gleich zu meinem gegebenen Wert sind. Dies ist etwas, was ich getan habe Es gab mir Ergebnisse, wo der Benutzer die angegebene Eigenschaft enthält, aber ich möchte genau übereinstimmen.

string container = getUserContainer(identityStore.ConnectionString); 
var searchRequest = new Nest.SearchRequest(); 
searchRequest.Size = 10000; 
searchRequest.Query = GetQuery(knownAttributes.SamAccountName, userName) && GetQuery("Container", container); 
var searchResults = elasticSearch.Search<Dictionary<string,object>>(searchRequest); 
       return null; 

private Nest.MatchQuery GetQuery(Nest.Field field, string query) 
{ 
      var matchQuery = new Nest.MatchQuery(); 
      matchQuery.Field = field; 
      matchQuery.Query = query; 
      matchQuery.Operator = Operator.And; 
      r 

einlesen matchQuery; }

+0

Was bedeutet das Mapping für den 'user' Typ im' adatum.local_1' Index? Sind 'sAMAccountName' und' Container' als 'Schlüsselwort'-Feldtypen zugeordnet? –

Antwort

0

Versuchen Sie folgendes:

IQueryResponse<T> result = client.Search<T>(s => s 
           .Size(1)         
           .Query(q => q.Term("field1", value1) && q.Term("field2", value2)) 
           .Index("myindex") 
           .Type("mytype") 
           ); 
          if (result.Documents.Count<T>() > 0) 
          { 
           //do something          
          } 
+0

Es gibt ein Problem mit diesem. Es gab mir Ergebnis, wo "Feld1" Wert1 enthält, aber ich brauche wo "Feld1" ist genau gleich zu Wert1. –

+0

Nein, normalerweise gibt der Begriff Abfrage das genaue Ergebnis zurück, siehe: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html Eine andere Möglichkeit ist, dass Sie definieren Ihr Feld in elasticsearch des Typs keyword. Dann wird der Text nicht analysiert und nicht mit einem Token versehen. Sie können also Ihre Termabfrage ausführen, um die genaue Übereinstimmung zu finden. – Ohlsen1980

Verwandte Themen