如何解决在 CrafterCMS 中按分类法搜索
CrafterCMS 编辑蓝图显示了使用分类法进行内容定位。使用文章的 category_o 字段,我可以分配 0 到 4 个类别。该字段的 Elasticsearch 索引如下所示:
"categories_o" : {
"item" : [
{
"key" : "style","value_smv" : "Style"
},{
"key" : "technology","value_smv" : "Technology"
}
]
},
如何搜索具有一个或多个类别的文章?
Liferay 的内置分类框架为类似的字段创建了一个 Elasticsearch 索引,如下所示:
"assetCategoryIds" : [ "644879","644884","644889","6207544","6207546","6207550" ],
然后您可以使用 Elasticsearch 查询构造“terms”来搜索属于多个(不仅仅是一个)类别的文档:
"query": { "bool": {
"must": { "match_all": {} },"filter": {
"bool": {
"must": [
{"terms": {"assetCategoryIds": ["644889","6207550"]}},...
我正在寻找一种在 CrafterCMS 中进行相同搜索的方法。
解决方法
您可以使用相同的查询,使用字段的完整路径:
"terms": {"categories_o.item.key": [...]}
,
我对其进行了测试,此查询有效:
alias jcurl='curl -H "Content-Type: application/json"'
jcurl -sXPOST "localhost:9201/sample2-preview_v1/_search?pretty" -d '
{"size":1,"query":{"bool":{"must":[
{"terms":{"categories_o.item.key":["technology","style"]}}]}}}'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。