percolate-query.asciidoc 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. [[java-query-percolate-query]]
  2. ==== Percolate query
  3. See:
  4. * {ref}/query-dsl-percolate-query.html[Percolate Query]
  5. [source,java]
  6. --------------------------------------------------
  7. // create an index with a percolator field with the name 'query':
  8. client.admin().indices().prepareCreate("myIndexName")
  9. .addMapping("query", "query", "type=percolator")
  10. .get();
  11. //This is the query we're registering in the percolator
  12. QueryBuilder qb = termQuery("content", "amazing");
  13. //Index the query = register it in the percolator
  14. client.prepareIndex("myIndexName", "query", "myDesignatedQueryName")
  15. .setSource(jsonBuilder()
  16. .startObject()
  17. .field("query", qb) // Register the query
  18. .endObject())
  19. .setRefresh(true) // Needed when the query shall be available immediately
  20. .get();
  21. --------------------------------------------------
  22. This indexes the above term query under the name
  23. *myDesignatedQueryName*.
  24. In order to check a document against the registered queries, use this
  25. code:
  26. [source,java]
  27. --------------------------------------------------
  28. //Build a document to check against the percolator
  29. XContentBuilder docBuilder = XContentFactory.jsonBuilder().startObject();
  30. docBuilder.field("doc").startObject(); //This is needed to designate the document
  31. docBuilder.field("content", "This is amazing!");
  32. docBuilder.endObject(); //End of the doc field
  33. docBuilder.endObject(); //End of the JSON root object
  34. // Percolate, by executing the percolator query in the query dsl:
  35. SearchResponse response = client().prepareSearch("myIndexName")
  36. .setQuery(QueryBuilders.percolateQuery("query", ""myDocumentType", docBuilder.bytes()))
  37. .get();
  38. //Iterate over the results
  39. for(SearchHit hit : response.getHits()) {
  40. // Percolator queries as hit
  41. }
  42. --------------------------------------------------