MultiTermVectors in der Elasticsearch Java

Ich benutze die folgende Funktion, um den Begriff Vektor für einige Satz von IDs zu erhalten.

public static void builtTermVectorRequest(Client client, String index, Map<String, String> postIDs) { TermVectorsRequest termVectorsRequest = new TermVectorsRequest(); termVectorsRequest.index(index).type("post"); for (Map.Entry<String, String> entry : postIDs.entrySet()) { String currentPostId = entry.getKey(); String currentParentID = entry.getValue(); termVectorsRequest .id(currentPostId) .parent(currentParentID) .termStatistics(true) .selectedFields("content"); } MultiTermVectorsRequestBuilder mtbuilder = client.prepareMultiTermVectors(); mtbuilder.add(termVectorsRequest); MultiTermVectorsResponse response = mtbuilder.execute().actionGet(); XContentBuilder builder; try { builder = XContentFactory.jsonBuilder().startObject(); response.toXContent(builder, ToXContent.EMPTY_PARAMS); builder.endObject(); System.out.println(builder.prettyPrint().string()); } catch (IOException e) {} } 

Hier habe ich einige Dokument-IDs zusammen mit ihren Eltern-IDs, da die Dokumente Kinder-Dokumente sind.

Ich bekomme, dass die Dokumente nicht gefunden wurden, auch wenn sie existieren.

Um zu bestätigen, habe ich die gleiche Sache in Python mit:

 body = dict(docs=map(lambda x: { "fields": ["content"], "_id": x["_id"], "_routing": x["_routing"], "term_statistics": "true" }, result["hits"]["hits"])) es_client = elasticsearch.Elasticsearch([{'host': '192.168.111.12', 'port': 9200}]) all_term_vectors = es_client.mtermvectors( index="prf_test", doc_type="post", body=body ) 

Und ich bekomme Ergebnisse zurück.

Was ist mit dem Java-Code falsch?

One Solution collect form web for “MultiTermVectors in der Elasticsearch Java”

Ich habe mehr Kombinationen auf, wie man TermVectorsRequest mit MultiTermVectorsRequestBuilder und schließlich kam zu der folgenden Lösung, die funktioniert:

 /** * Prints term-vectors for child documents given their parent ids * * @param client Es client * @param index Index name * @param postIDs Map of child docuemnt ID to its _parent/_routing ID * @return */ public static void builtTermVectorRequest(Client client, String index, Map<String, String> postIDs) { /** * Initialize the MultiTermVectorsRequestBuilder first */ MultiTermVectorsRequestBuilder multiTermVectorsRequestBuilder = client.prepareMultiTermVectors(); /** * For every document ID, create a different TermVectorsRequest and * add it to the MultiTermVectorsRequestBuilder created above */ for (Map.Entry<String, String> entry : postIDs.entrySet()) { String currentPostId = entry.getKey(); String currentRoutingID = entry.getValue(); TermVectorsRequest termVectorsRequest = new TermVectorsRequest() .index(index) .type("doc_type") .id(currentPostId) .parent(currentRoutingID) // You can use .routing(currentRoutingID) also .selectedFields("some_field") .termStatistics(true); multiTermVectorsRequestBuilder.add(termVectorsRequest); } /** * Finally execute the MultiTermVectorsRequestBuilder */ MultiTermVectorsResponse response = multiTermVectorsRequestBuilder.execute().actionGet(); XContentBuilder builder; try { builder = XContentFactory.jsonBuilder().startObject(); response.toXContent(builder, ToXContent.EMPTY_PARAMS); builder.endObject(); System.out.println(builder.prettyPrint().string()); } catch (IOException e) { } } 
  • Parsing Java Class aus Perl oder Python
  • WhatsApp API (java / python)
  • Python vs. Java Leistung (Laufzeit Geschwindigkeit)
  • Robot Framework - Verwendung von User Libraries
  • Java -> Python?
  • "Standard" Art der Erstellung der Konfigurationsdatei geeignet für Python und Java zusammen
  • Sparen Sie JSON aus einer URL in eine Datei
  • Verwenden Sie Threads, um interaktiv mit dem Python-Interpreter zu sprechen
  • Python-Steckdose und Steckdose anschließen
  • Namespaces in C # vs Importe in Java und Python
  • Base36 Kodieren Sie einen String?
  • Python ist die beste Programmiersprache der Welt.