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/
若本文如对您有帮助,不妨点击一下右下角的【推荐】。
如果您喜欢或希望看到更多我的文章,可扫描二维码关注我的微信公众号《翎野君》。
转载文章请务必保留出处和署名,否则保留追究法律责任的权利。

浙公网安备 33010602011771号