在 elasticsearch 中构建复合查询
building compound query in elasticsearch
我试图在 elasticsearch 中使用 BoolQueryBuilder 搜索以下案例
select * from students where (name = "XXX" and rollno = 1) or (name = "YYY" and rollno = 2)
我必须为其构建查询生成器。
任何人都可以建议我使用 BoolQueryBuilder 来构建查询。
弹性搜索 6.1.2
非常感谢任何帮助。
这里是:
GET students/_search
{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"term": {
"name": {
"value": "XXX"
}
}
},
{
"term": {
"rollno": {
"value": "1"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"name": {
"value": "YYY"
}
}
},
{
"term": {
"rollno": {
"value": "2"
}
}
}
]
}
}
]
}}}
bool复合查询基本上可以应用到更深层次。剩下的就是关于在 OR
或 AND
操作的情况下如何使用。
在这种情况下,should
映射到 OR
,must
映射到 AND
。
干杯,
这是 java api 构建 BooleanQueryBuilder 条件
BoolQueryBuilder booleanQuery = QueryBuilders.boolQuery();
booleanQuery.must(QueryBuilders.termQuery("name", "XXX"));
booleanQuery.must(QueryBuilders.termQuery("rollno", 1));
BoolQueryBuilder booleanQuery2 = QueryBuilders.boolQuery();
booleanQuery2.must(QueryBuilders.termQuery("name", "YYY"));
booleanQuery2.must(QueryBuilders.termQuery("rollno", 2));
BoolQueryBuilder boolQueryBuilder3 = QueryBuilders.boolQuery();
boolQueryBuilder3.should(booleanQuery2);
boolQueryBuilder3.should(booleanQuery);
我试图在 elasticsearch 中使用 BoolQueryBuilder 搜索以下案例
select * from students where (name = "XXX" and rollno = 1) or (name = "YYY" and rollno = 2)
我必须为其构建查询生成器。
任何人都可以建议我使用 BoolQueryBuilder 来构建查询。
弹性搜索 6.1.2
非常感谢任何帮助。
这里是:
GET students/_search
{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"term": {
"name": {
"value": "XXX"
}
}
},
{
"term": {
"rollno": {
"value": "1"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"name": {
"value": "YYY"
}
}
},
{
"term": {
"rollno": {
"value": "2"
}
}
}
]
}
}
]
}}}
bool复合查询基本上可以应用到更深层次。剩下的就是关于在 OR
或 AND
操作的情况下如何使用。
在这种情况下,should
映射到 OR
,must
映射到 AND
。
干杯,
这是 java api 构建 BooleanQueryBuilder 条件
BoolQueryBuilder booleanQuery = QueryBuilders.boolQuery();
booleanQuery.must(QueryBuilders.termQuery("name", "XXX"));
booleanQuery.must(QueryBuilders.termQuery("rollno", 1));
BoolQueryBuilder booleanQuery2 = QueryBuilders.boolQuery();
booleanQuery2.must(QueryBuilders.termQuery("name", "YYY"));
booleanQuery2.must(QueryBuilders.termQuery("rollno", 2));
BoolQueryBuilder boolQueryBuilder3 = QueryBuilders.boolQuery();
boolQueryBuilder3.should(booleanQuery2);
boolQueryBuilder3.should(booleanQuery);