hasil kueri elasticsearch dikelompokkan berdasarkan beberapa bidang

halo terima kasih sebelumnya, saya baru di elasticsearch dan saya punya pertanyaan mengenai pertanyaan, saya punya daftar media yang memiliki banyak bidang:

{

"judul": "xxx"

"ID pengguna": "1"

"gambar": "zzz.jpg"

"kota": "paris"

.....

}

saya perlu mendapatkan semua media untuk kota paris dan mendorong skor untuk x jumlah gambar pertama untuk setiap pengguna sehingga hasilnya tidak akan diambil dari pengguna yang sama. Misalnya:

Katakanlah kita ingin mendorong skor 2 gambar pertama untuk setiap pengguna:

pengguna1 gambar1

pengguna1 gambar2

pengguna1 gambar3

pengguna1 gambar4

pengguna2 gambar1

pengguna2 gambar2

pengguna2 gambar3

pengguna2 gambar4

pengguna2 gambar5

pengguna2 gambar6

pengguna3 gambar1

pengguna3 gambar2

pengguna3 gambar3

........

keluaran yang diharapkan:

pengguna1 gambar1

pengguna1 gambar2

pengguna2 gambar1

pengguna2 gambar2

pengguna3 gambar1

pengguna3 gambar2

pengguna1 gambar3

pengguna1 gambar4

pengguna2 gambar3

pengguna2 gambar4

pengguna2 gambar5

pengguna2 gambar6

pengguna3 gambar3


person A.Malak    schedule 14.04.2016    source sumber
comment
Selamat datang di StackOverflow. Saat ini pertanyaan Anda tidak jelas apa yang Anda tanyakan. Coba tambahkan beberapa kode dan identifikasi secara spesifik di mana Anda mengalami masalah.   -  person buczek    schedule 14.04.2016


Jawaban (1)


Anda dapat mencoba kueri seperti berikut:

GET _search
{
  "query": {
    "query_string": {
      "query": "*"
    }
  },
  "size": 0, 
  "aggs": {
    "@user_id": {
      "terms": {
        "field": "user_id",
        "size": 0,
        "order": {
              "_term": "asc"
            }
      },
      "aggs": {
        "@image": {
          "terms": {
            "field": "image",
            "size": 2,
            "order": {
              "_term": "asc"
            }
          },
          "aggs": {
            "@source": {
              "top_hits": {
                "size": 1
              }
            }
          }
        }
      }
    }
  }
}

"size": 2 in @image aggs memungkinkan Anda menentukan jumlah gambar. Outputnya akan seperti:

    {
   "took": 2,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "failed": 0
   },
   "hits": {
      "total": 16,
      "max_score": 0,
      "hits": []
   },
   "aggregations": {
      "@user_id": {
         "doc_count_error_upper_bound": 0,
         "sum_other_doc_count": 0,
         "buckets": [
            {
               "key": "user1",
               "doc_count": 4,
               "@image": {
                  "doc_count_error_upper_bound": 0,
                  "sum_other_doc_count": 2,
                  "buckets": [
                     {
                        "key": "image1",
                        "doc_count": 1,
                        "@source": {
                           "hits": {
                              "total": 1,
                              "max_score": 1,
                              "hits": [
                                 {
                                    "_index": "test",
                                    "_type": "test",
                                    "_id": "AVQVaph2LY9bI6YPTNWp",
                                    "_score": 1,
                                    "_source": {
                                       "user_id": "user1",
                                       "image": "image1"
                                    }
                                 }
                              ]
                           }
                        }
                     },
                     {
                        "key": "image2",
                        "doc_count": 1,
                        "@source": {
                           "hits": {
                              "total": 1,
                              "max_score": 1,
                              "hits": [
                                 {
                                    "_index": "test",
                                    "_type": "test",
                                    "_id": "AVQVareVLY9bI6YPTPCg",
                                    "_score": 1,
                                    "_source": {
                                       "user_id": "user1",
                                       "image": "image2"
                                    }
                                 }
                              ]
                           }
                        }
                     }
                  ]
               }
            },
            {
               "key": "user2",
               "doc_count": 4,
               "@image": {
                  "doc_count_error_upper_bound": 0,
                  "sum_other_doc_count": 2,
                  "buckets": [
                     {
                        "key": "image1",
                        "doc_count": 1,
                        "@source": {
                           "hits": {
                              "total": 1,
                              "max_score": 1,
                              "hits": [
                                 {
                                    "_index": "test",
                                    "_type": "test",
                                    "_id": "AVQVau9JLY9bI6YPTSPx",
                                    "_score": 1,
                                    "_source": {
                                       "user_id": "user2",
                                       "image": "image1"
                                    }
                                 }
                              ]
                           }
                        }
                     },
                     {
                        "key": "image2",
                        "doc_count": 1,
                        "@source": {
                           "hits": {
                              "total": 1,
                              "max_score": 1,
                              "hits": [
                                 {
                                    "_index": "test",
                                    "_type": "test",
                                    "_id": "AVQVavh1LY9bI6YPTSP0",
                                    "_score": 1,
                                    "_source": {
                                       "user_id": "user2",
                                       "image": "image2"
                                    }
                                 }
                              ]
                           }
                        }
                     }
                  ]
               }
            },
            {
               "key": "user3",
               "doc_count": 4,
               "@image": {
                  "doc_count_error_upper_bound": 0,
                  "sum_other_doc_count": 2,
                  "buckets": [
                     {
                        "key": "image1",
                        "doc_count": 1,
                        "@source": {
                           "hits": {
                              "total": 1,
                              "max_score": 1,
                              "hits": [
                                 {
                                    "_index": "test",
                                    "_type": "test",
                                    "_id": "AVQVayTFLY9bI6YPTVZA",
                                    "_score": 1,
                                    "_source": {
                                       "user_id": "user3",
                                       "image": "image1"
                                    }
                                 }
                              ]
                           }
                        }
                     },
                     {
                        "key": "image2",
                        "doc_count": 1,
                        "@source": {
                           "hits": {
                              "total": 1,
                              "max_score": 1,
                              "hits": [
                                 {
                                    "_index": "test",
                                    "_type": "test",
                                    "_id": "AVQVazP4LY9bI6YPTWnK",
                                    "_score": 1,
                                    "_source": {
                                       "user_id": "user3",
                                       "image": "image2"
                                    }
                                 }
                              ]
                           }
                        }
                     }
                  ]
               }
            },
            {
               "key": "user4",
               "doc_count": 4,
               "@image": {
                  "doc_count_error_upper_bound": 0,
                  "sum_other_doc_count": 2,
                  "buckets": [
                     {
                        "key": "image1",
                        "doc_count": 1,
                        "@source": {
                           "hits": {
                              "total": 1,
                              "max_score": 1,
                              "hits": [
                                 {
                                    "_index": "test",
                                    "_type": "test",
                                    "_id": "AVQVa16pLY9bI6YPTbgL",
                                    "_score": 1,
                                    "_source": {
                                       "user_id": "user4",
                                       "image": "image1"
                                    }
                                 }
                              ]
                           }
                        }
                     },
                     {
                        "key": "image2",
                        "doc_count": 1,
                        "@source": {
                           "hits": {
                              "total": 1,
                              "max_score": 1,
                              "hits": [
                                 {
                                    "_index": "test",
                                    "_type": "test",
                                    "_id": "AVQVa2a3LY9bI6YPTcuX",
                                    "_score": 1,
                                    "_source": {
                                       "user_id": "user4",
                                       "image": "image2"
                                    }
                                 }
                              ]
                           }
                        }
                     }
                  ]
               }
            }
         ]
      }
   }
}
person Кирилл Полищук    schedule 14.04.2016
comment
terima kasih kawan atas jawabannya tetapi saya mencoba untuk mendapatkan hasil dalam hit bukan dalam agregat - person A.Malak; 18.04.2016