2016-04-27 3 views
0

Ich arbeite an elasticsearch und ein Problem, dass wie viel Zeit ein Wort in der Zeit Datensätze zu der Zeit kommt kommt.Finden Sie, wie oft wir in der elastischen Suche ein Zeichen in einer Reihe haben

Wie habe ich folgende Zeilen:

{ 
{ "user":"Aniket", "postDate":"2016-04-26","body":"Search as we discuss yesterday one time word", "title":"One time word"} 
    }, 
{ 
"user": "aniket", "postDate": "2016-04-26", "body": "Distribution is hard. Distribution should be easy.word word word word" , "title": "Four times word"} 
    }, 
{"user": "aniket", "postDate": "2016-04-26", "body": "Distribution is hard. Distribution should be easy.word word word" , "title": "Three times word"} 
    }, 
{"user": "aniket", 
    "postDate": "2016-04-26", 
    "body": "Distribution is hard. Distribution should be easy.word word" , 
    "title": "Two times word" 
} 

Ich habe über vier Reihen unter Benutzern Aniket und wir haben „Wort“ in jeder Reihe, aber manchmal geht es zwei, drei, vier oder einmal. Ich brauche das Ergebnis wie wenn ich nach "Wort" suche und wir vier Wörter im Ergebnis finden, als dass es oben kommen würde: 1. Wort Wort Wort Wort 2. Wort Wort Wort 3. Wort Wort 4. Wort Ich habe versucht mit Score zu, aber Score wird mir keine Informationen dazu liefern.

Antwort

1

Sie benötigen Skriptsortierung. Etwas wie folgt aus:

"sort": { 
    "_script": { 
     "type": "number", 
     "script": "termInfo=_index['body'][term].tf();return termInfo;", 
     "params": { 
     "term": "word" 
     }, 
     "lang": "groovy", 
     "order": "desc" 
    } 
    } 

und ermöglichen Groovy Scripting in elasticsearch.yml Datei:

script.groovy.sandbox.enabled: true 

Und auch, müssen Sie eine entsprechende Analysator. Für Ihren Fall, zum Beispiel, mit dem standard Analysator (der Standard-Analysator) erhalten Sie keinen Split bei easy.word. Damit diese Sortierung funktioniert, benötigen Sie einen Analysator, der beispielsweise unter . aufgeteilt wird.

+0

Es wurde versucht, das Ergebnis mit dem folgenden Befehl abzurufen: curl -XGET 'http: // localhost: 9200/blog/post/_search' -d '{"Felder": ["id", "body", "title" , "Benutzer", "PostDatum"], "Abfrage": {"Term": {"Benutzer": "Aniket"}}, "Sortierung": {"_script": {"Typ": "Nummer", "Skript ": {" inline ":" termInfo = _index ['body'] [Begriff] .tf(); return termInfo; "," params ": {" term ":" Wort "}}," order ":" desc "}}} 'aber nicht die Antwort bekommen –

+0

Hm, können Sie bitte die Zuordnung Ihrer' Post' geben? –

+0

Ich bin neu in elasticsearch, also gibt es keine Zuordnung, ich füge nur die Datensätze mit cmd und Wunsch-Suche. –

Verwandte Themen