2016-04-06 12 views
0

Ich habe ein Feld, unter einem Typ Unternehmen, in meinem ElasticSearch-Index, der die Technologien erfasst, die das Unternehmen verwendet. So können Leute, die zu unserer Seite kommen, java, Java, , .Net, .net etc. in das Suchfeld eingeben, um die Firmen zu bekommen.So suchen Sie nach # oder. in Elasticsearch

zunächst indizierte ich dies in dem Standard-Weg und dann konnte ich nicht für .Net oder C# suchen, wie es Platzhalter in der Abfrage Suche war. Als ich mit Net oder C suchte, gab es Unternehmen zurück, die C oder C# verwenden, was wiederum nicht korrekt ist.

Ich habe ein wenig Forschung und änderte die Zuordnung für das Feld zu "index": "not_analyzed" und neu indiziert die Unternehmen. Jetzt gab es die korrekten Firmen für C# und .Net zurück, aber scheiterte in dem Fall, in dem der Suchbegriff nicht genau passierte. So gab es keine Unternehmen mit Java Technologien, wenn der Suchbegriff java war, aber es korrekt zurückgegeben, wenn der Suchbegriff java war. Ich verstehe, dass not_analyzed erfordert genaue Übereinstimmung

Wie indexiere ich und Abfrage auf dem gleichen Feld, um diese beiden Fälle aussortiert werden?

Antwort

2

Der Weg, um zu erreichen, was Sie brauchen, ist ein benutzerdefinierter Analysator zu erstellen, der ein bisschen mehr tut als was not_analyzed tut, d. H. Auch die Begriffe kleingeschrieben.

curl -XPUT localhost:9200/test_index -d '{ 
    "settings": { 
    "analysis": { 
     "analyzer": { 
     "lowercase_keyword": { 
      "type": "custom", 
      "tokenizer": "keyword", 
      "filter": [ "lowercase" ] 
     } 
     } 
    } 
    }, 
    "mappings": { 
    "test_type": { 
     "properties": { 
     "name": { 
      "type": "string", 
      "analyzer": "lowercase_keyword" 
     } 
     } 
    } 
    } 
}' 

Dann, wenn Sie Index ein Dokument, das Java enthält, wird es als java indiziert werden, C# als c#, etc

Damit werden die Vorteile der Groß- und Kleinschreibung exakte Übereinstimmungen bringen.

+0

Das funktioniert. Vielen Dank. –

+0

Schön, froh, dass es geklappt hat! – Val

Verwandte Themen