IMPORTANT: No additional bug fixes or documentation updates
will be released for this version. For the latest information, see the
current release documentation.
Specialized queries
editSpecialized queries
editThis group contains queries which do not fit into the other groups:
-
more_like_this
query - This query finds documents which are similar to the specified text, document, or collection of documents.
-
script
query -
This query allows a script to act as a filter. Also see the
function_score
query. -
percolate
query - This query finds percolator queries based on documents.
-
wrapper
query - A query that accepts other queries as json or yaml string.
More Like This Query
editScript Query
editSee Script Query
If you have stored on each data node a script named myscript.painless
with:
doc['num1'].value > params.param1
You can use it then with:
Percolate Query
editSee: * Percolate Query
Settings settings = Settings.builder().put("cluster.name", "elasticsearch").build(); TransportClient client = new PreBuiltTransportClient(settings); client.addTransportAddress(new TransportAddress(new InetSocketAddress(InetAddresses.forString("127.0.0.1"), 9300)));
Before the percolate
query can be used an percolator
mapping should be added and
a document containing a percolator query should be indexed:
// create an index with a percolator field with the name 'query': client.admin().indices().prepareCreate("myIndexName") .addMapping("_doc", "query", "type=percolator", "content", "type=text") .get(); //This is the query we're registering in the percolator QueryBuilder qb = termQuery("content", "amazing"); //Index the query = register it in the percolator client.prepareIndex("myIndexName", "_doc", "myDesignatedQueryName") .setSource(jsonBuilder() .startObject() .field("query", qb) // Register the query .endObject()) .setRefreshPolicy(RefreshPolicy.IMMEDIATE) // Needed when the query shall be available immediately .get();
This indexes the above term query under the name myDesignatedQueryName.
In order to check a document against the registered queries, use this code:
//Build a document to check against the percolator XContentBuilder docBuilder = XContentFactory.jsonBuilder().startObject(); docBuilder.field("content", "This is amazing!"); docBuilder.endObject(); //End of the JSON root object PercolateQueryBuilder percolateQuery = new PercolateQueryBuilder("query", "_doc", BytesReference.bytes(docBuilder)); // Percolate, by executing the percolator query in the query dsl: SearchResponse response = client().prepareSearch("myIndexName") .setQuery(percolateQuery)) .get(); //Iterate over the results for(SearchHit hit : response.getHits()) { // Percolator queries as hit }
Wrapper Query
editSee Wrapper Query