返回字段设置
有时你希望控制搜索时返回的字段,某一些字段你只希望用户可以搜索,但不一定需要用来展示。
比如说,如果你的搜索对象是文章,那么正文对于搜索排序来说可能很重要,但在展示搜索结果时,你可能并不会将正文直接展示出来。同时,如果你在服务端进行搜索的话,较大的字段可能会占用较多流量和带宽,因此你希望略去。
另外一些情况,你可能希望用一些字段用于搜索和排序,但并不希望用户能够查看到这些字段。
比如,在商品搜索时,销售额可能是一个比较重要的排序指标,但你并不希望你的用户能直接查看到这些商品的销售额。
在卡拉搜索中,你可以通过返回字段 fieldsToRetrieve
和禁止返回字段 fieldsNeverRetrieve
来控制搜索结果中返回的字段。返回字段和禁止返回字段均可以在后台的索引设置中的 返回字段
一栏中进行调整。
返回字段
我们用来指定返回字段的设置叫 fieldsToRetrieve
,即 返回字段
。在索引设置中,你可以指定返回字段。仅有指定的字段会返回到搜索结果中,默认为返回所有字段。
比如说,如果你将 fieldsToRetrieve
设置为仅返回 ["title"]
,那么在搜索结果中,在 hits.source
中就只有标题这一个字段被返回。
{"totalHits": 1,"hits": [{"id": "n_u-QXQBFAjd3marbeiR","source": {"title": "大话西游"},"highlights": {"summary": {"value": "一部周星驰主演的爱情喜剧片","hasMatch": false},"title": {"value": "<strong>大话</strong>西游","hasMatch": true}}}],"queryTimeUsed": 0}
永不返回字段
我们用 fieldsNeverRetrieve
,即 永不返回字段
来设置永远不会返回到搜索结果的字段。
对于一些字段,如果需要确认它绝不会返回到搜索结果中,那么可以使用永不返回字段。比如说,如果一件商品的销售件数需要对用户隐藏,那么将这个字段加到 fieldsNeverRetrieve
中,即可保证用户永远不会看到这个字段。
永不返回字段的优先级高于返回字段,因此,如果你在前端指定需要返回一个字段,但又在 fieldsNeverRetrieve
设置中将这个字段设为永不返回时,这个字段的内容仍然不会被返回。
因此,对于较为敏感的信息或内容,可以设置到 fieldsNeverRetrieve
中,以保证其对用户不可见。
永不返回字段仅可以索引设置中设置,在后台的索引设置 - 返回字段中,即可找到。