Example 1:
GET /INDEX/TYPE/_search { "query": { "filtered": { "filter": { "script": { "script": "doc['field1'].value < doc['field2'].value" } } } } }
Example 2:
GET /INDEX/TYPE/_search { "query": { "filtered": { "filter": { "script": { "script": "doc['field1'].value - doc['field2'].value > 10" } } } } }
Java API:
import org.elasticsearch.index.query.FilterBuilders; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.index.query.FilteredQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; FilteredQueryBuilder query = QueryBuilders.filteredQuery(null, FilterBuilders.scriptFilter("doc['field1'].value < doc['field1'].value")); SearchRequestBuilder searchRequestBuilder = esClient.prepareSearch("INDEX").setTypes("TYPE").setQuery(query).setSize(10); SearchResponse searchResponse = searchRequestBuilder.execute().actionGet();