按来自其他请求的数据对查询结果进行排序(ElasticSearch)

时间:2018-02-08 23:42:24

标签: elasticsearch

我有巨大的索引包含非常静态的数据:

{
  "main" : {
    "mappings" : {
      "students" : {
        "properties" : {
          "name" : {
            "type" : "text"
          },
          "age" : {
            "type" : "integer"
          }
      }
    }
  }
}

另一个索引包含动态数据。例如:

{
  "dynamic" : {
    "mappings" : {
      "ratings" : {
        "properties" : {
          "student" : {
            "type" : "keyword"
          },
          "rating" : {
            "type" : "integer"
          }
      }
    }
  }
}

我们需要通过第二个索引的评级将查询排序到第一个索引。真的吗?

从第一个索引获取所有数据然后在我的站点后端进行排序是非常低效的。

1 个答案:

答案 0 :(得分:0)

看起来这些数据应该都包含在一个索引中。学生有1个或更多评分吗?如果是这样,请在学生文档中嵌套学生的评分,以便您可以编写更复杂的查询并对嵌套值进行排序。

请记住,elasticsearch不是关系型的。没有办法"结合"不同的索引就像在SQL中组合不同的表一样。如果要一起查询信息,则需要将它们编入索引。