Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
476 views
in Technique[技术] by (71.8m points)

elasticsearch - Search by taxonomy in CrafterCMS

CrafterCMS editorial blueprint shows the use of taxonomy for content targeting. Using the article's categories_o field, I can assign 0 to 4 categories. The Elasticsearch index for that field looks like this:

      "categories_o" : {
        "item" : [
          {
            "key" : "style",
            "value_smv" : "Style"
          },
          {
            "key" : "technology",
            "value_smv" : "Technology"
          }
        ]
      },

How do I search articles with one or more categories?

The built-in categorization framework of Liferay creates an Elasticsearch index for a similar field like this:

    "assetCategoryIds" : [ "644879", "644884", "644889", "6207544", "6207546", "6207550" ],

Then you can use the Elasticsearch query construct "terms" to search documents belongs to multiple (not just one) categories:

"query": { "bool": {
  "must": { "match_all": {} },
  "filter": {
    "bool": {
      "must": [
        {"terms": {"assetCategoryIds": ["644889","6207550"]}},
...

I am looking for a way to do the same search in CrafterCMS.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can use the same query, using the full path of the field:

"terms": {"categories_o.item.key": [...]}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...