最近刚开始看 ES 相关的文档,有一个问题,这样的一段查询应该怎么用 Java API 实现呢?
{
"query": {
"bool": {
"must": [
{
"term": {
"id": "100"
}
},
{
"match": {
"city": "bejing"
}
},
{
"term": {
"date": "2020-04-22"
}
}
]
}
}
}
看了官方文档,可以用 QueryBuilders.matchQuery() 或者 QueryBuilders.termQuery() 来实现单个字段的匹配,但像上面这样在一个查询中,同时用 match 和 term 匹配不同字段,用 QueryBuilder 应该怎么实现呢?
最后 Google 出来了答案,用 BoolQueryBuilder.must()
boolQueryBuilder.must(QueryBuilders.termQuery("id", "100"));
boolQueryBuilder.must(QueryBuilders.matchQuery("city", "beijing"));
1
itskingname 2020-04-23 18:53:30 +08:00
唉,用 Python 多省事。非得有 Java
|
2
terry0314 OP @itskingname 我自己写东西肯定用 Py,但项目用 Java 写的没法呀🤣
|
3
damngood 2020-04-23 19:37:34 +08:00 via iPhone
用第三方 client lib 来实现
开启 trace 会打印 query dsl 自己手写太太太麻烦了 |
4
damngood 2020-04-23 19:39:10 +08:00 via iPhone
噢 sorry 没看到下面的更具体的问题
|