elasticsearch中有以下映射:
all: {{- range .Load.Proc}} {{.Name}}{{end}}
{{- range .Load.Proc}}
.PHONY: {{.Name}}
{{.Name}}:
@echo {{.Text}}
{{end}}
我想知道是否有可能获得所有雇员年龄最大值小于30岁的公司。在SQL中,我只需要选择公司,然后按公司ID加入雇员和组,并在其中添加where子句即可最大年龄小于30岁。
答案 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