2013-08-30 4 views
11

를 업그레이드 한 후 작동하지 않는 사용되는 다음과 같은 종류의 스크립트 0.2에서 작동하지만 지금은 0.9에 실패탄성 검색 정렬 스크립트가

{ 
    "_script": { 
    "script": "org.elasticsearch.common.Digest.md5Hex(doc['myId'].value + 12345)", 
    "type": "string", 
    "order": "asc" 
    } 
} 

내가 받고 오전 오류는 다음과 같습니다

PropertyAccessException[[Error: unresolvable property or identifier: org] 

나는 보았다 이 작업을 수행하는 사용자 지정 점수 쿼리를 만드는 것이므로 약간의 추가 정보가 필요합니다. 나는 이미 맞춤 점수 쿼리를 사용하고 있으며,이 정렬은 점수가 일치 할 때 보조 정렬이며, 정기적으로 발생할 수 있습니다. 위의 예에서 상수는 검색을 수행하는 사람을 기반으로하므로 검색하는 사람마다 무작위로 정렬되지만 일관된 정렬을 얻고 항상 모든 사람에게 동일한 결과를 표시하지는 않습니다.

동일한 정렬 기능을 유지하면서 문제가 발생하는 이유와 해결 방법에 대한 정보를 찾을 수 없습니다. 어떤 도움이나 새로운 방향으로 나를 가리켜 주시면 크게 감사하겠습니다.

+0

사용자 정의 Java 스크립트를 작성하고 등록한 다음 ("lang": "native"매개 변수를 제공하는) 사용자의 조회에서이를 참조해야하는 것처럼 보입니다. 필자는 결코 Java 전문가는 아니지만 그러한 스크립트를 만드는 방법에 대한 훌륭한 자습서가 있습니다. https://github.com/imotov/elasticsearch-native-script-example 결국 임의의 정렬 스크립트를 확인하십시오. 당신이 필요로하는 것입니다. –

+0

비 MVEL 스크립트가 플러그인으로 구현되어야한다고 생각합니다. 인라인 스크립트는 MVEL이 아닌 스크립트에는 허용되지 않습니다. 누구나 확인할 수 있습니까? –

+0

은 또한 JS 시도 - 당신은 여전히 ​​JS 지원을 활성화 할 수있는 플러그인을 설치해야하지만 인라인 표현식을 수행 할 수 있습니다. "종류": { "_script": { "스크립트": "문서 [ '날'] 값을 * 계수 + 'anyvaluehere' " "타입 ":"문자열 " "의 PARAMS "{ "인자 ": 1.1 } "주문 ":"ASC " "LANG ":"JS " } } –

답변

4

나는 메일 링리스트의 게시물에 답글을 달았습니다. 문제는 org.elasticsearch.common.Digest이 (가) elasticsearch에서 제거 되었기 때문입니다. 나는 당신이 자바에 익숙하다면 아마도 자바 원시 스크립트를 작성하는 것이 더 쉬울 것이라고 생각하지 않는다.

다른 한편으로는 여기에 귀하의 질문에 대한 자세한 내용이 있습니다. 스크립트 작성을 사용하여 원하는 것을 얻을 수 있는지 여부를 궁금해하고 있습니다.

귀하의 usecase는 최근에 추가 된 rescore query에 대해 생각하게하여 보조 검색어를 사용하여 상위 K 개의 결과를 재검토하도록 허용합니다. 각 샤드에서 rescore가 실행된다는 점을 고려해야합니다. 따라서 처음 10 개의 문서를 요청할 경우, 각 문서의 상위 10 개 문서에서 rescore가 발생하며 이는 축소 단계에서 선택한 상위 10 개 문서에 영향을 미칩니다. 반환 된 문서의 순서를 변경하려고하는 것처럼 들리는 반면 rescore 쿼리를 사용하면 해당 문서는 rescore 프로세스 자체로 인해 변경 될 수 있습니다.

향후 버전 0.90.4에는 무작위 시드가 포함되어 있으므로 정렬의 임의적 측면에 도움이됩니다. 더 알고 싶다면 related issue을보십시오.

무작위 순서 지정을 허용하는 기능 점수 쿼리와 함께 rescore 쿼리를 결합하는 것이 좋습니다.

+0

랜덤 시드 순서가 좋은 대체 방법이었습니다. 메일 링리스트에서이 문제를 일으킨 정확한 커밋을 찾아 주셔서 감사합니다. –