在業務中,我們的數據是通過多個值,來限定其唯一性的.
比如以下三個字段
- s_client_no
- s_card_no
- s_mobile
此時在查詢時,就會犯一個錯誤,例如有以下兩條數據
數據A:{“s_client_no”:“10086”,“s_card_no”:“10087”, “s_mobile”:“13280626922”}
數據B:{“s_mobile”:“13280626922”}
也就是說數據B的信息中是沒有s_client_no和s_card_no這兩個字段的
此時我們如果想查詢到數據B時,查詢語句如下:
{
"query": {
"bool": {
"must_not": [{
"exists": {
"field": "s_client_no"
}
}, {
"exists": {
"field": "s_card_no"
}
}],
"filter": [{
"term": {
"s_mobile": {
"boost": 1,
"value": "13280626922"
}
}
}]
}
}
}
在java中如何體現呢
BoolQueryBuilder qb = QueryBuilders.boolQuery();
qb.mustNot(QueryBuilders.existsQuery("s_client_no"));
qb.mustNot(QueryBuilders.existsQuery("s_card_no"));
qb.filter(QueryBuilders.termQuery("s_mobile", "13280626922"));