elasticsearch 검색엔진의 상용 방법 (4) 집합 검색aggs
5863 단어 elasticsearches집합 페이지
뉴스 인덱스 아래의 모든 뉴스를 통계하는 발표 기구는 각각 어떤 것들이 있는지
GET news/_search
{
"aggs": {
"publish_org": {
"terms": {
"field": "publish_org.keyword",
"size": 10
}
}
},
"size": 0
}
참고:
집합된 필드가 없을 때text 형식 필드
결과는 다음과 같습니다.
{
"took" : 32,
"timed_out" : false,
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"hits" : {
"total" : 10000,
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"publish_org" : {
"doc_count_error_upper_bound" : 1601,
"sum_other_doc_count" : 173772,
"buckets" : [
{
"key" : " ",
"doc_count" : 97325
},
{
"key" : " ",
"doc_count" : 27339
},
{
"key" : "FX168 ",
"doc_count" : 26442
},
{
"key" : " ",
"doc_count" : 16988
},
{
"key" : " ",
"doc_count" : 14284
},
{
"key" : " ",
"doc_count" : 12371
},
{
"key" : " ",
"doc_count" : 6981
},
{
"key" : " ",
"doc_count" : 6249
},
{
"key" : " ",
"doc_count" : 6237
},
{
"key" : " ",
"doc_count" : 6129
}
]
}
}
}
반환 필드 설명(비공식):
aggregations: 집합의 결과
publish_org: 검색 시 사용자 정의 반환 결과 이름
buckets: 집합된 결과 집합, 결과 수는size와 동일
키: 집합 필드publish_org의 값
count:publish_org 필드에 대응하는 정보수
doc_count_error_upper_bound、sum_other_doc_count의 통계 결과는 정확하지 않아서 설명을 하지 않습니다.
2. 다중 집합
뉴스 인덱스 아래의 모든 뉴스의 발표 기구를 통계하고, 이 발표 기구가 발표한 최초의 뉴스로 되돌아간다
GET news/_search
{
"aggs": {
"publish_org": {
"terms": {
"field": "publish_org.keyword",
"size": 10
},
"aggs": {
"result": {
"top_hits": {
"sort": [
{
"publish_time": {
"order": "desc"
}
}
],
"size": 1
}
}
}
}
},
"size": 0
}
구조 설명을 읽어들입니다.
1 층aggs: 첫 번째 집합
publish_org: 첫 번째 집합 결과 집합 이름 사용자 정의
terms: 통합 조회
2층aggs: 1차 집합 결과에서 다시 집합
result: 사용자 정의 2층 집합 결과 집합 이름
top_hits: 두 번째 레이어 집합의hits 결과(top_hits는 부분 검색 기능을 지원합니다.sort,highlight,size 등)
sort: 정렬
내부 크기:top_hits 결과 반환 수량
외부 크기: 일반 검색 결과 수량
3. 검색된 모든 버킷 수량 조회
뉴스 인덱스 아래의 뉴스는 모두 몇 개의 발표 기구가 있는지 통계한다
GET news/_search
{
"aggs": {
"publish_org_count": {
"cardinality": {
"field": "publish_org.keyword",
"precision_threshold": 40000
}
}
},
"size": 0
}
구조 설명을 읽어들입니다.
publish_org_count: 집합 결과 집합 이름
cardinality: 조회 버킷 수량
precision_threshold: 통계 정밀도
참고:
precision_threshold는 서버 메모리를 소모하여 통계 정밀도를 바꾸는 것이므로 신중하게 사용하십시오.es 기본 버킷 수량이 3000인 것은 정확한 통계입니다. 즉precision_threshold=3000, 3000을 찾았을 때 통계의 수량은 모두 모호값이고 최대 40000의 정확한 통계를 지원합니다
결과는 다음과 같습니다.
{
"took" : 6642,
"timed_out" : false,
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"hits" : {
"total" : 123143,
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"publish_org_count" : {
"value" : 11083
}
}
}
4. 집합 페이지 조회 버킷
상기 조회한 11080개의 뉴스 발표 기구를 페이지별로 전시하다
방법 1:
첫 번째 단계:buckets의 총수를 조회합니다. 상기 (3)
두 번째 단계: 검색된 버킷 총수를 두 번째 검색의size 매개 변수로 삼는다. 즉,
GET news/_search
{
"aggs": {
"publish_org": {
"terms": {
"field": "publish_org.keyword",
"size": 11083
}
}
},
"size": 0
}
세 번째 단계: 두 번째 단계는 모든 버킷을 조회한 다음에 자신이 원하는 페이지에 따라 코드 차원에서 수동으로 페이지 처리를 할 것이다
방법 2:
첫 번째 단계:buckets의 총수를 조회합니다. 상기 (3)
두 번째 단계: 수동으로 buckets를 n등분으로 나누어 페이지별 집합 조회를 실현한다
계산 방법은 다음과 같습니다.
1,cardinality를 사용하여 버킷을 얻는 총수는 11083
2. 페이지마다 표시되는 데이터의 크기를 결정=10
3, 페이지 수 계산publish_org_count/10 + 1 = 1109
4. 검색 문장을 결합하면 다음과 같다.
#
GET news/_search
{
"aggs": {
"publish_org": {
"terms": {
"field": "publish_org.keyword",
"include": {
"partition": 0,
"num_partitions": 1109
},
"size": 10
}
}
},
"size": 0
}
#
GET news/_search
{
"aggs": {
"publish_org": {
"terms": {
"field": "publish_org.keyword",
"include": {
"partition": 1,
"num_partitions": 1109
},
"size": 10
}
}
},
"size": 0
}
# , partition
구문 설명(비공식):
include: 컬렉션 검색 페이지 기준
partition: 현재 buckets (현재 페이지 수)
num_partitions: 모든 버킷을 몇 개의 버킷으로 나눈다 (총 몇 페이지)
내층size: 모든 버킷에 포함된 버킷 수 (페이지당 몇 개의 데이터)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
kafka connect e elasticsearch를 관찰할 수 있습니다.No menu lateral do dashboard tem a opção de connectors onde ele mostra todos os clusters do kafka connect conectados atu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.