인프런 커뮤니티 질문&답변
페이지네이션 질문드립니다.
작성
·
12
0
안녕하세요 강사님
페이지네이션 강의에서 1번글 ~ 7번글로 insert를 한 이후에 size를 지정하면 1번글부터 나오는데
id가 랜덤임에도 엘라스틱서치에는 mysql seq개념처럼 insert된것부터 document가 쌓여
그냥 조회하면 순차적으로 insert된것부터 나오게 되는걸까요?
만약 아무런 조건없이 asc정렬을 하고싶다하면 그냥 _search만 해도 되는걸까요? ( 실무에서도 그냥 아무런 조건없이 순차적으로 보여준다하면 그냥 findAll만 하는지 궁금합니다 )
답변 3
0
안녕하세요 ! 질문 잘 해주셨어요 ~
질문해주신 내용에 답변 드려볼게요 !
"id가 랜덤임에도 엘라스틱서치에는 mysql seq개념처럼 insert된것부터 document가 쌓여 그냥 조회하면 순차적으로 insert된것부터 나오게 되는걸까요?"
-> 우선 Elasticsearch는 기본적으로 데이터를 삽입 순서대로 보장해서 반환하지 않아요 ~
기본 조회 시에는 관련성 점수(_score) 기준으로 정렬이 되는데, "글"이라는 동일한 키워드로 검색하면 모든 문서의 점수가 같아지게 돼요 ! 이렇게 점수가 동일할 때는 내부적으로 삽입 순서와 유사하게 나오는 경우가 많아서 순서대로 나오는 것처럼 보이는 거예요 :)
"만약 아무런 조건없이 asc정렬을 하고싶다하면 그냥 _search만 해도 되는걸까요?"
-> 삽입 순서대로 정렬을 보장받고 싶으시다면 _search만으로는 안정적이지 않아요 ~
실무에서도 명확한 순서가 필요하다면 sort 옵션을 사용해서 특정 필드 기준으로 정렬하는 것을 권장드려요 !
예를 들어 날짜 필드나 id 필드 기준으로 asc 정렬하는 방식을 많이 사용해요:)
추가로 궁금하신 점 있으시면 언제든 편하게 추가 질문 남겨주세요~~
0
0
안녕하세요, 인프런 AI 인턴입니다. 나마스테님.
Elasticsearch의 페이지네이션 및 정렬에 대한 질문을 주셨네요. 이와 관련된 내용을 설명드리겠습니다.
Elasticsearch 페이지네이션 및 정렬
기본 정렬: Elasticsearch에서 document가 인서트된 순서대로 조회되는 것은 아닙니다. 기본적으로 Elasticsearch는
score에 따라 결과를 정렬합니다._id가 랜덤으로 생성된다면 기본 정렬 순서에 영향을 주지 않습니다.특정 정렬 없이 조회:
_search요청을 할 때 별도의 정렬 조건을 주지 않으면 기본적으로_score에 따라 정렬됩니다. 만약 랜덤하게 부여된id로 정렬하고 싶다면 명시적으로 정렬 조건을 지정해야 합니다.ASC 정렬: 특별히 ASC나 DESC 정렬을 원하신다면
sort파라미터를 명시적으로 추가하여 원하는 필드로 정렬할 수 있습니다. 아무 조건 없이 정렬하기 위해서는 명시적으로 정렬 기준이 설정되지 않는 이상 기본 정렬은 적용되지 않습니다. 예를 들어,asc정렬을 하고 싶다면 다음과 같이 쿼리를 작성할 수 있습니다:
{
"query": {
"match_all": {}
},
"sort": [
{"_id": {"order": "asc"}}
]
}
- Real-world practices: 실무에서는 보통 요구사항에 따라 적절한 필드로 정렬을 명시합니다. 가령, 생성날짜나 특정 기준에 따라 문서를 정렬하여 보여주게 됩니다. 단순히 모든 결과를 순차적으로 보여주는 경우도 있지만, 대체로 비즈니스 요구사항에 맞게 정렬 기준이 존재합니다.
따라서 Elasticsearch의 기본 동작을 이해하고 요구에 맞는 쿼리를 작성하는 것이 중요합니다. 다음 링크에서 이하와 관련된 토픽을 더 찾아보실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




