簡體   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