1

我想在弹性搜索中执行以下操作。

从班级 = 10 和年龄 = 15 的学生中选择不同的姓名、城市;

它应该返回名称和城市的所有不同值。如何执行此操作?

4

1 回答 1

1

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html#request-body-search-collapse。字段折叠在这里应该会有所帮助。

{
    "query": { 
    "bool": {
     "must": [
       {"match": 
         {
         "class": 10
         }
       },
       {"match": 
         {
         "age": 15
         }
       }
     ] 
    }
  },
    "collapse" : {
        "field" : "name.keyword" ,
        "inner_hits" : {
          "name": "by_type",
            "collapse" : {"field" : "city.keyword"}
        }
    }, 
    "size": 100
}

上面的查询会在匹配到class和age后返回一个文档par name和city。

于 2020-06-02T17:51:52.637 回答