2013-06-01 2 views
4

나는 3 인덱스를 쿼리 할 필요가 있도록 elasticsearch를 사용하여 자동 완성 검색을 구축하고 있습니다. posts, comments, authors.Elasticsearch - 정렬 다중 인덱스 쿼리

{ 
    "query":{ 
     "query_string":{ 
     "query":"something" 
     } 
    } 
} 

전화 :

curl -X GET 'http://localhost:9200/posts,comments,authors/_search?pretty' -d '{ 
    "query": { 
    "query_string": { 
     "query": "something" 
    } 
    } 
}' 

내가 예를 들어, 특정 인덱스 필드를 기준으로 결과를 정렬해야합니다

게시물 지수 필드가 comments_count라는 가지고, 의견 나는 다음과 같은 쿼리를 가지고 votes_count 및 저자 posts_count. 게시물을 비교할 때 comments_count, 의견이 votes_count 인 경우 작성자가 posts_count 일 때 정렬해야합니다.

그렇게 할 수 있나요? 색인을 완전히 다른 색인으로 만들기 때문에 색인을 하나로 병합하고 싶지 않습니다.

답변

2

글쎄, 내 문제는 만약 내가 모든 색인에 존재하지 않는 필드에 의해 정렬, 문서가 반환되지 않을 것입니다. 심지어 하단의 경우,

{ 
    "_script":{ 
     "script":"type=doc['_type'].value;if(type=='posts'){return doc['comments_count'].value} else {return 0};", 
     "type":"number", 
     "order":"desc" 
    } 
} 

적어도 현재 문서가 표시됩니다 :

함께 해결하기 위해 관리.

+0

"모든 색인에없는 필드로 정렬하면 문서가 반환되지 않습니다." 그것은 제어 가능합니다. http://www.elasticsearch.org/guide/reference/api/search/sort/를 참조하십시오. 귀하의 경우에는 아마도'{ "missing": "_last"}'를 사용해야합니다. –

0

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-sort.html

을 사용하면 여러 인덱스에 대한 질의 및 필드가 다른 인덱스에 존재하지 않을 때 필드를 무시 unmapped_type을 무시합니다. 대신 comments_count, votes_countposts_count를 사용

+0

코드 예제를 추가해야합니다. –

+0

이것은 이론적으로 질문에 대답 할 수 있지만 여기서 대답의 핵심 부분을 포함하고 참조 용 링크를 제공하는 것이 바람직합니다 (// meta.stackoverflow.com/q/8259). – OhBeWise

0

당신이 인덱스에 같은 이름을 (예를 들어 items_count)을 넣어 평소 정렬을 수행 할 수는 : items_count 부족 다른 개체가있는 경우

{ 
    "sort": [ 
    { "items_count": "desc" } 
    ] 
} 

ignore unmapped fields에 대한 옵션이 있습니다 :

{ 
    "sort": [ 
    { "items_count": { "order": "desc", "unmapped_type": "long" } } 
    ] 
} 
관련 문제