2016-05-30 3 views
2

Dies ist JSON, die ich für eine Suche verwenden möchten:Wie suche ich nach einem JSON-Feld in elasticsearch mit Java?

{ 
    "_index" : "test", "_type" : "insert", "_id" : "3", 
    "_version" : 2, "found" : true, 
    "_source" : { 
     "ACCOUNT_ID" : "123", 
     "CONTACT_ID" : "ABC" 
    } 
} 

Wie suche ich für die ganze JSON die ACCOUNT_ID ab 1 haben?

+0

Bitte, löschen Sie es, wenn Sie meinen: Präfix von ACCOUNT_ID = 1 oder ACCOUNT_ID von 1, 2, 3, .....? – sunkuet02

+0

@AbdullaAlSun Die Frage besagt, dass der Konto-ID-Wert in verschiedenen JSONs (separaten Dokumenten) unterschiedlich ist. –

+0

ACCOUNT_ID ist ein String-Wert. Also im vorliegenden Beispiel ist es "123", ich möchte wissen, wie alle JSONs mit der ACCOUNT_ID beginnend mit "1" abgerufen werden. oder –

Antwort

1

Von was ich in Ihren Kommentaren sehe, versuchen Sie IDs zu finden, die mit 1 zum Beispiel beginnen. Nun, wenn Ihr Analysator der Standard ist, wird die ID "123" wie "123" tokenisiert. Sie können Platzhalter verwenden und wie '1 *' suchen. Seien Sie vorsichtig bei der Verwendung von Platzhaltern, da einige Speicher benötigt werden.

Siehe hier: QueryString - Wildcard

2

Sie Wildcard in Elasticsearch verwenden können, für eine ACCOUNT_ID zu suchen, die aus startet 1

GET index/_search 
{ 
     "query": { 
     "wildcard": { 
      "ACCOUNT_ID ": { 
      "value": "1*" 
      } 
     } 
     } 
    } 

In Java können Sie so etwas wie dies versuchen:

QueryBuilders.wildcardQuery("ACCOUNT_ID ", "1*"); 
+0

QueryBuilders.wildcardQuery ("ACCOUNT_ID", "1 *") gibt null Treffer. Ich meine die Treffer: [] ist leer –

+0

Können Sie Ihr Java-Programm hochladen? – Rose

Verwandte Themen