Elasticsearch에서 중첩 된 다중 필드 속성을 정렬하는 동안 문제가 발생했습니다. 두 개의 다중 필드 중 하나가 작동하고 다른 하나는 모든 값에 대해 null을 반환합니다.Elasticsearch - 중첩 된 멀티 필드로 정렬
내 정렬 분석기 :
"analyzer": {
"sortable": {
"type": "custom",
"tokenizer": "keyword",
"filter": ["lowercase"]
}
}
매핑 :
{
"doc": {
"properties": {
"id" : {
"type": "long"
},
"name": {
"type": "string",
"index": "analyzed",
"analyzer": "snowball",
"fields": {
"sortable": {
"type": "string",
"analyzer": "sortable"
}
}
},
"website": {
"type": "nested",
"properties": {
"domain": {
"type": "string",
"analyzer": "snowball",
"fields": {
"sortable": {
"type": "string",
"analyzer": "sortable"
}
}
},
"created": {
"type": "date"
}
}
}
}
}
}
전체 작업 예 here이다. 하단의 네 가지 검색에 유의하십시오. name 또는 name.sortable을 기준으로 정렬하면 결과의 정렬 섹션에 값이 표시됩니다. website.domain을 기준으로 정렬하면 정렬 섹션에 값이 표시되지만 website.domain.sortable은 항상 null을 표시합니다.
저는 여기서 바보 같은 짓을하고 싶습니다.하지만 내 인생에서 나는 무엇을 볼 수 없습니다. 이것은 Elasticsearch 1.1.0에 있습니다. 기꺼이 대안 솔루션을 사용하겠습니다. 비록 두 개의 다른 이름으로 필드를 두 번 두드리는 것을 싫어합니다.
그래도 실제로 적용 되나요? 중첩 된 유형 자체가 아니라 중첩 된 유형 아래의 문자열 유형에 "필드"를 추가합니다. 그리고 검색은 두 분야에서 모두 가능합니다. 검색 용어를 "mydomain-com"으로 변경하면 스노우 볼 분석 필드 (website.domain)는 "mydomain"또는 "com"과 일치하지만 sortable 필드 (website.domain.sortable)는 전체 텍스트 " mydomain-com ". 새로운 샘플 http://sense.qbox.io/gist/cc801f831b45075463ee160146aea279419d0505 그리고 기꺼이 sense.qbox.io를 사용하면 훨씬 쉽게 작업 할 수 있습니다. – Jafoy
당신은 절대적으로 옳았습니다. 나는 중첩 된 필터가 존재하지 않았기 때문에 잘못된 결론을 내 렸습니다. 나는 지금 그것을 조사하고있다. 매우 이상한 –
혼란을 가져 주어서 불편을 끼쳐 드려 죄송합니다. –