关于elastic:Elastchsearch产品列表

36次阅读

共计 2618 个字符,预计需要花费 7 分钟才能阅读完成。

mapping

  • delete

    ### delete
    DELETE {{host}}/goods
    content-type: application/json
    accept: application/json
  • query

    ### mapping
    GET {{host}}/goods
    content-type: application/json
    accept: application/json
  • create

    ### create
    PUT {{host}}/goods
    content-type: application/json
    accept: application/json
    
    {
    "mappings": {
      "properties": {
        "goodsId": {"type": "long"},
        "goodsName": {"type": "text"},
        "goodsNameSort": {"type": "keyword"},
        "supTypeId": {"type": "keyword"},
        "typeId": {"type": "keyword"},
        "products": {
          "type": "nested",
          "properties": {
            "productSapId": {"type": "keyword"},
            "name": {"type": "text"},
            "priceSort": {"type": "integer"},
            "priceRdSapIds": {"type": "keyword"},
            "tagsSort": {"type": "integer"},
            "tags": {
              "type": "nested",
              "properties": {
                "tagId": {"type": "long"},
                "sort": {"type": "integer"},
                "startTime": {
                  "type": "date",
                  "format": "yyyy-MM-dd"
                },
                "endTime": {
                  "type": "date",
                  "format": "yyyy-MM-dd"
                }
              }
            },
            "promotions": {
              "type": "nested",
              "properties": {
                "promotionId": {"type": "long"},
                "rdSapIds": {"type": "keyword"},
                "promotionType": {"type": "keyword"},
                "startTime": {
                  "type": "date",
                  "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
                },
                "endTime": {
                  "type": "date",
                  "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
                }
              }
            },
            "stocks": {
              "type": "nested",
              "properties": {
                "stockId": {"type": "keyword"},
                "stock": {"type": "integer"},
                "stockWeek": {"type": "integer"},
                "stock14Days": {"type": "integer"},
                "stockMonth": {"type": "integer"}
              }
            },
            "isHot": {"type": "keyword"}
          }
        }
      }
    }
    }

search

### filter
POST {{host}}/goods/_search
content-type: application/json
accept: application/json

{
  "explain": true,
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "supTypeId": [1]
          }
        },
        {
          "terms": {
            "typeId": [2]
          }
        },
        {
          "nested": {
            "path": "products",
            "query": {
              "bool": {
                "must": [
                  {
                    "nested": {
                      "path": "products.tags",
                      "query": {
                        "terms": {
                          "products.tags.tagId": [4001]
                        }
                      }
                    }
                  },
                  {
                    "terms": {
                      "products.priceRdSapIds": [3001]
                    }
                  },
                  {
                    "nested": {
                      "path": "products.stocks",
                      "query": {
                        "script": {"script": "for (int i=0;i<doc['products.stocks.stock'].length;i++){if(doc['products.stocks.stock'][i]>0)return true;}return false;"
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        }
      ]
    }
  },
  "sort": [
    {
      "products.tagsSort": {
        "order": "desc",
        "mode": "sum",
        "nested": {"path": "products"}
      }
    }
  ]
}

test data

### 1001: 全副
POST {{host}}/goods/_doc/1001
content-type: application/json
accept: application/json

{
  "goodsId": 1001,
  "goodsName": "1001",
  "goodsNameSort": "1001",
  "supTypeId": [1],
  "typeId": [2],
  "products": [
    {
      "productSapId": 2001,
      "name": "2001",
      "priceRdSapIds": [3001],
      "tagsSort": 1,
      "tags": [
        {
          "tagId": 4001,
          "sort": 1
        }
      ],
      "stocks": [
        {
          "stockId": 1,
          "stock": 0,
          "stockWeek": 0,
          "stock14Days": 0,
          "stockMonth": 0
        },
        {
          "stockId": 10,
          "stock": 1,
          "stockWeek": 0,
          "stock14Days": 0,
          "stockMonth": 0
        }
      ]
    },
    {
      "productSapId": 2002,
      "name": "2002",
      "tagsSort": 2,
      "tags": [
        {
          "tagId": 3,
          "sort": 2
        }
      ],
      "stocks": [
        {
          "stockId": 2,
          "stock": 1,
          "stockWeek": 0,
          "stock14Days": 0,
          "stockMonth": 0
        }
      ]
    }
  ]
}

正文完
 0