获取嵌套字段最大值小于参数值的项目

时间:2018-06-25 15:32:56

标签: elasticsearch spring-data-elasticsearch

elasticsearch中有以下映射:

all: {{- range .Load.Proc}} {{.Name}}{{end}}


{{- range .Load.Proc}}
.PHONY: {{.Name}}
{{.Name}}:
    @echo {{.Text}}
{{end}}

我想知道是否有可能获得所有雇员年龄最大值小于30岁的公司。在SQL中,我只需要选择公司,然后按公司ID加入雇员和组,并在其中添加where子句即可最大年龄小于30岁。

1 个答案:

答案 0 :(得分:0)

对于您而言,这很容易。因为您永远不会得到重复的公司支持,因为每个公司只有一个文档,所以您可以直接搜索。示例:

GET yourindex/_search
{
  "query": {
    "bool": {
      "must_not": [
        {"range": {
          "employee.age": {
            "gt": 30
          }
        }}
      ]
    }
  }
}

值得注意的是,如果您想进行结合员工字段的搜索,则可能会遇到问题。例如,如果您要搜索所有雇员为age < 30 AND gender=MALE的公司,则此模型将失效。默认情况下, ElasticSearch 将所有字段都视为独立字段。这意味着该查询将返回任何公司,该公司至少具有一名MALE员工和一名30岁以下的员工。您将无话可说,他们必须是同一个人。如果您需要执行这些类型的查询,则需要查看嵌套映射和查询,这将使查询稍有改变。

详细信息: https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html