elasticsearch在查询条件中查询两个字段值相同的数据
背景
在查询条件中计算两个字段相等的条件用SQL查出来的方式如下:
select * from area t where area_id = upper_area_id;
es 查询语句如下
示例:
{ "from": 0, "size": 100, "query": { "bool": { "filter": { "script": { "script": { "inline": "doc['area_id'].value - doc['upper_area_id'].value == 0", "lang": "painless" }, "boost": 1 } } } } }
javaApi如下
Map<String, Object> params = new HashMap<>(); String idOrCode = "doc['area_id'].value - doc['upper_area_id'].value == 0"; Script script = new Script(ScriptType.INLINE, "painless", idOrCode, params); ScriptQueryBuilder scriptQueryBuilder = new ScriptQueryBuilder(script); BoolQueryBuilder builder = QueryBuilders.boolQuery(); builder.must(scriptQueryBuilder); SearchResponse searchResponse = getClient().prepareSearch("goods_recommend") .setTypes("tags") .setQuery(builder) .get();
本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。
作者:翎野君
出处:http://www.cnblogs.com/lingyejun/
若本文如对您有帮助,不妨点击一下右下角的【推荐】。
如果您喜欢或希望看到更多我的文章,可扫描二维码关注我的微信公众号《翎野君》。
转载文章请务必保留出处和署名,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/lingyejun/
若本文如对您有帮助,不妨点击一下右下角的【推荐】。
如果您喜欢或希望看到更多我的文章,可扫描二维码关注我的微信公众号《翎野君》。
转载文章请务必保留出处和署名,否则保留追究法律责任的权利。