前言
在未来,一篇文档可能有很多(是的,很多!不要被我们的示例这仨俩字段所迷惑)的字段,每次查询都默认给我们返回全部,在数据量很大的时候,是的,比如我只想查姑娘的手机号,你一并给我个喜好啊、三围什么的算什么?是要告诉洒家,hi,小老弟,要撩妹么?
所以,我们对结果做一些过滤,清清白白的告诉elasticsearch,小老弟,我只是查!水!表!
准备数据
PUT zhifou/doc/1
{
"name":"顾老二",
"age":30,
"from": "gu",
"desc": "皮肤黑、武器长、性格直",
"tags": ["黑", "长", "直"]
}
结果过滤:_source
现在,在所有的结果中,我只需要查看name和age两个属性,其他的不要怎么办?
GET zhifou/doc/_search
{
"query": {
"match": {
"name": "顾老二"
}
},
"_source": ["name", "age"]
}
如上例所示,在查询中,通过_source来控制仅返回name和age属性。
{
"took" : 8,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 0.8630463,
"hits" : [
{
"_index" : "zhifou",
"_type" : "doc",
"_id" : "1",
"_score" : 0.8630463,
"_source" : {
"name" : "顾老二",
"age" : 30
}
}
]
}
}
在数据量很大的时候,我们需要什么字段,就返回什么字段就好了,提高查询效率。整个三围啥的可low了,有本事上图!
欢迎斧正,that's all