繁体   English   中英

Elasticsearch 过滤动态聚合字段

[英]Elasticsearch Filter Dynamically Aggregated Fields

我正在尝试根据可用类别中的前端选择来搜索/过滤结果:

我能够获取命中数据和聚合数据,这为我提供了所有可用的产品类别、颜色和品牌。

现在,当有人选择一个品牌时,我希望能够通过 UriParams 将该变量发送到我的后端

'example.com/search?productBrand=Apple'

现在,对于一个过滤器,我可以做到,但如果用户选择 1 个品牌过滤器、2 个 Colors 和 3 个产品类别怎么办。 我怎么能在我的后端做到这一点?

这是我的身体 object,我使用 elastic-js 通过 Axios 发送

body: {
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "mainCategory.v.keyword": "HaSoftrdware"
          }
        }
      ],
      "must": [
        {
          "terms": {
            "cObj.n.keyword": [
              "Apple",
              "Microsoft"
            ]
          }
        }
      ]
    }
    },
    "from": from,
    "size": 6,
    "sort": [
      {
        "price": {
          "order": "asc"
        }
      }
    ],
    "aggs": {
      "mainCategory": {
        "terms": {
          "field": "mainCategory.n.keyword",
        }
      },
      "city": {
        "terms": {
          "field": "cObj.n.keyword",
        }
      },
      "make": {
        "terms": {
          "field": "carMake.n.keyword",
        }
      },
      "model": {
        "terms": {
          "field": "carModel.n.keyword",
        }
      },
      "gasoline": {
        "terms": {
          "field": "carGasoline.n.keyword",
        }
      },
      "adType": {
        "terms": {
          "field": "adType.keyword",
        }
      },
      "carTable": {
        "terms": {
          "field": "carTable.n.keyword",
        }
      }
    }
  }

我是否需要预先定义后端中的所有内容或如何存档.. 过去 2-3 天这让我难以理解我正在苦苦挣扎

干杯

为了解决您的问题,您可以使用查询引擎(带有访问者设计模式)来生成搜索所需的适当查询正文。 此外,可以使用不同语言的 Elastic 客户端来实现您想要的。 您可以在此处找到弹性 node.js 客户端文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM