2017-02-16 4 views
0

매핑하는 필드에 따라 정렬 할 필드는 double 유형입니다. 기대하는 음수 값이 있으므로 누락 된 값을 0으로 처리 할 것으로 예상했습니다. 누락 된 것들 아래로 이동하십시오. (현재 누락 된 항목이 음수 이하가됩니다.)Elasticsearch 2.x 정렬로 0.0으로 처리 됨

어떻게해야합니까?

답변

0

누락되거나 null 값이 0 값으로 처리되어야한다고 설명하는 것 같습니다. 실제 '0'값과 구별 할 필요가없는 경우 null_value을 사용할 수 있습니다. the manual

다른 상황에서는 구별해야 할 경우 플래그를 추가해야 할 수 있습니다 이 같은 순서 2, 1, 3에서 문서를 반환합니다

PUT test 
{ 
    "mappings": { 
    "my_type": { 
     "properties": { 
     "status_code": { 
      "type":  "integer", 
      "null_value": 0 
     } 
     } 
    } 
    } 
} 

PUT test/my_type/1 
{ 
    "status_code": null 
} 
PUT test/my_type/2 
{ 
    "status_code": -1 
} 
PUT test/my_type/3 
{ 
    "status_code": 1 
} 

GET test/my_type/_search 
{ 
    sort" : [ 
     { "status_code" : "desc" }, 
    ] 
} 

: 또는 뭔가 (그래서 두 번째 필드는) 실제로 "하지만 실제로 실종됐다",하지만 그건 정말 유스 케이스에

빠른 예를 따라 말할 수 있습니다 예상 됨

0

는 정렬 function score 쿼리 (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html)에 not 필터와 함께 사용하고, 귀하의 경우 0.0과 같은 값을 누락 필요한 부스트/점수를 줄 수 exists 쿼리 (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html)가있다.

하지만 훨씬 간단한 솔루션을 제안합니다. 필드 값을 누락 값 대신 0.0으로 지정하면 훨씬 쉽게 작업 할 수 있습니다. 필요한 필드를 정렬 할 수 있습니다.