Elasticsearch의 Nested Sorting

2858 단어 elasticsearch

(이것은 작은 시리즈입니다. 스탬프: Elasticsearch의 Nested (끼워넣기) 시리즈, 다른nested 관련 글 보기)
         It is possible to sort by the value of a nested field, even though the value exists in a separate nested document. To make the result 
more interesting, we will add another record:
독립된nested 텍스트에 존재하지만, nested 필드를 기반으로 하는 값 정렬은 가능합니다.결과를 더욱 재미있게 하기 위해 다른 기록을 추가합시다.
curl -XPUT 'localhost:9200/my_index/blog/2' -d '
{
  "title": "Investment secrets",
  "body":  "What they don't tell you ...",
  "tags":  [ "shares", "equities" ],
  "comments": [
    {
      "name":    "Mary Brown",
      "comment": "Lies, lies, lies",
      "age":     42,
      "stars":   1,
      "date":    "2014-10-18"
    },
    {
      "name":    "John Smith",
      "comment": "You're making it up!",
      "age":     28,
      "stars":   2,
      "date":    "2014-10-16"
    }
  ]
}

             Imagine that we want to retrieve blog posts that received comments in October, ordered by the lowest number of stars that each blog
 post received. The search request would look like this:
우리가 10월에 평론된 블로그 글을 검색하고 각 문장에서 받은 최저 성급 순서에 따라 정렬하고 싶다고 가정해 보자.검색 요청은 다음과 유사해야 합니다.
curl -XPUT 'localhost:9200/_search' -d '
{
  "query":{
     "nested":{
	    "path":"comments",
		"filter":{
		   "range":{
		      "comments.date":{
			      "gte":"2014-10-01",
				  "lt":"2014-11-01"
			  }
		   }
		}
	 }
  },
  "sort":{
     "comments.stars":{
	     "order":"asc",
		 "mode": "min",
		 "nested_filter":{
		     "range":{
			    "comments.date":{
				   "gte":"2014-10-01",
				   "lt":"2014-11-01"
				}
			 }
		 }
	 }
  }
}

           Why do we need to repeat the query conditions in the nested_filter? The reason is that sorting happens after the query has been executed. 
The query matches blog posts that received comments in October, but it returns blog post documents as the result. If we didn’t include the 
nested_filter clause, we would end up sorting based on any comments that the blog post has ever received, not just those received in October.
왜 우리가nested_필터 내 중복 검색 조건?정렬은 조회 실행이 끝난 후에 발생하기 때문이다.10월에 댓글을 받은 블로그 문장과 일치하지만, 블로그 문장으로 돌아갑니다.
텍스트를 결과로 사용합니다.하면, 만약, 만약...filter 블록은 10월에 받은 평점이 아닌 되돌아오는 블로그 글의 모든 평론을 바탕으로 정렬됩니다.
(!!! 자신의 유한한elasticsearch 사용 경험에 근거하여 이 점은 독자들이 중시할 만하다!!!)
원문:http://www.elastic.co/guide/en/elasticsearch/guide/current/nested-sorting.html

좋은 웹페이지 즐겨찾기