ElasticSearch의'distinct','count','group by'
3147 단어 ElasticSearch
1 - distinct
SELECT DISTINCT(userName) FROM table WHERE userId = 3;
{
"query": {
"term": {
"userId ": 3
}
},
"collapse": {
"field": "userName"
}
}
{
...
"hits": {
"hits": [
{
"_index": "test01",
"_type": "keywords",
"_source": {
"userId": "1",
"userName": "huahua"
},
"fields": {
"pk": [
"1"
]
}
}
]
}
}
요약:collapse 필드를 사용하면 검색 결과에서 [hits]에 [fields] 필드가 나타날 것입니다. 중복된 user_가 포함되어 있습니다id
2 - count + distinct
SELECT COUNT(DISTINCT(userName)) FROM table WHERE userId= 3;
{
"query": {
"term": {
"userId": 3
}
},
"aggs": {
"count": {
"cardinality": {
"field": "userName"
}
}
}
}
{
...
"hits": {
...
},
"aggregations": {
"count": {
"value": 121
}
}
}
요약:aggs에서cardinality의 필드는distinct가 필요한 필드를 나타냅니다.
3 - count + group by
SELECT COUNT(userName) FROM table GROUP BY userId;
{
"aggs": {
"user_count": {
"terms": {
"field": "userId"
}
}
}
}
{
...
"hits": {
...
},
"aggregations": {
"user_type": {
...
"buckets": [
{
"key": 4,
"doc_count": 500
},
{
"key": 3,
"doc_count": 200
}
]
}
}
}
요약:aggs 중terms의 필드는gruopby가 필요한 필드를 나타냅니다.
4 - count + distinct + group by
SELECT COUNT(DISTINCT(userName)) FROM table GROUP BY userId;
{
"aggs": {
"unique_count": {
"terms": {
"field": "userId"
},
"aggs": {
"count": {
"cardinality": {
"field": "userName"
}
}
}
}
}
}
{
...
"hits": {
...
},
"aggregations": {
"unique_count": {
...
"buckets": [
{
"key": 4,
"doc_count": 500, // 1220
"count": {
"value": 26// 276
}
},
{
"key": 3,
"doc_count": 200, // 488
"count": {
"value": 20// 121
}
}
]
}
}
}
5 - 주의사항
collapse 키워드
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
spring-data-elasticsearch 페이지 조회부록: 1. 이름에서 알 수 있듯이QueryBuilder는 검색 조건, 필터 조건을 구축하는 데 사용되고 SortBuilder는 정렬을 구축하는 데 사용된다. 예를 들어 우리는 어느 위치에서 100미터 범위 내의 모...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.