Elasticsearch에는 정렬 및 페이지 매김이 기본적으로 지원됩니다. 그러나 중첩 된 객체 만 검색하고 페이지 매김을 만들고 필드별로 정렬하려면 어떻게해야합니까? 예를 들어 :중첩 된 문서 정렬 및 페이징
{
"mappings" : {
"library" : {
"properties" : {
"name" : {"type": "string"},
"books" : {
"type": "nested",
"properties" : {
"title" : {"type": "string"},
"author" : {"type": "string"},
"year" : {"type": "integer"}
}
}
}
}
}
}
어떻게 Elasticsearch을 요청할 수는 "나에게 year
으로 분류 title= 'Elasticsearch'
와 offset = 20
와 books
10 첫째 줄"? 중첩 된 유형이 가능합니까? 아니면 더 느린 부모 - 자식 관계를 사용해야합니까?
감사의 말, 'inner_hits'는 작동하지만, 중첩 된 객체는 상위 문서의 범위에서만 정렬 및 페이지 매김합니다. 그래서 쿼리 결과가 2 개의'library' 문서를 포함하고 있다면, 각각은 자신의'books'만으로 정렬 된 배열을 가지게됩니다. 그러나 달성하고자하는 것은 모든'books'가 매치 된 하나의 정렬 된 배열입니다. 그게 가능하니? –
내가해야 할 일은 book 객체를 최상위 라이브러리 객체로 만들고 추가로'library_name' 필드를 추가하는 것입니다. 언급하지 않은 다른 요구 사항이없는 한'중첩 된 '유형을 사용할 필요가 없습니다. – Val
실제 매핑은 더욱 복잡합니다. 우리는 '중첩 된'을 사용하여 '많은 것을 가진다'는 에뮬레이션을한다. 우리는 여러 개의 '다수 있음'필드가있는 문서를 가지고 있습니다 (그 중 일부는 하나도 가지고 있습니다). 우리는 데이터를 자주 변경하지 않으므로'중첩 된 (nested) '은 빠른 해결책이 될 것입니다. 유일한 stoper는 상위 범위에서 중첩 된 객체를 페이징/정렬하는 것입니다. 불가능하다면 다른 솔루션을 찾아야합니다. 당신의 이전 코멘트에 따르면, 나는'중첩 된 '것으로 내가 원하는 것을 얻을 수 없다, 맞습니까? –