es的collapse
es的collapse只能针对一个字段聚合(针对大数据量去重),如果以age为聚合字段,则会展示第一条数据,如果需要展示多个字段,需要创建新的字段,如下
POST testleh/_update_by_query
{"script": {"source": "ctx._source.new_field = ctx._source.name+','+ctx._source.age "}
}
该代码以age和那么创建了一个newfiled,如下图
这时就可以重新使用collapse查询
GET /testleh/_search
{"_source": "name", "query": {"match_all": {}},"sort": [{"age": {"order": "desc"}}],"collapse": {"field": "new_field.keyword"},}
附上删除索引的代码
POST testleh/_update_by_query
{"script": {"source": "if (ctx._source.containsKey('new_field')) { ctx._source.remove('new_field') }"}
}
term匹配多个查询条件
再者就是对于term匹配多个查询条件,代码如下,主要是should或者must里面一个大括号只能写一个term/match/range
GET /testleh/_search
{"query": {"bool": {"should": [{"term": {"age": {"value": "18"}}},{"term": {"name": {"value": "李华"}}}]}}
}
es的scroll可以对于大数据量进行查询,不适合实时查询展示