elasticsearch查詢時,多個字段限定唯一數據時的問題

在業務中,我們的數據是通過多個值,來限定其唯一性的.
比如以下三個字段

  • 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"));
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章