Elasticsearch 초보자. 이것은 매우 간단해야한다고 생각하지만 여기에 갇혀 있습니다. 다음과 같은 게시물 매핑이 있습니다.
[ post1: {
title: 'asdfasd',
comments: [commment1, comment2, comment3]
},
post2: {
title: 'asdf',
comments: [comment1, comment2]
}
.
.
.]
제목으로 검색 한 다음 댓글 수로 정렬하려고합니다. 제목으로 검색 할 수는 있지만 댓글 수를 기준으로 결과를 정렬하는 방법에 대해 약간 혼란 스럽습니다. 이를 수행하는 가장 좋은 방법은 무엇입니까?
두 가지 옵션이 있습니다.
스크립트 를 사용 하여 배열의 길이를 가져옵니다. 따라서 다음과 같이 할 수 있습니다.
{
"query" : {
....
},
"sort" : {
"_script" : {
"script" : "doc['comments'].values.length",
"type" : "number",
"order" : "desc"
}
}
}
주석 수에 대한 추가 필드를 유지하고 주석을 추가 할 때마다 주석 카운터 값도 증가하고이를 기준으로 정렬합니다.
데이터가 많은 경우 옵션 # 2가 선호됩니다. 스크립트를 사용하면 오버 헤드가 발생하며 대규모 문서 모음에서 스크립트를 계산해야하는 경우 검색 시간이 늘어날 수 있습니다. 반면에 필드별로 정렬하는 것이 성능 측면에서 훨씬 좋습니다. 나는 # 2로 갈 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다