首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >must_not不适用于嵌套弹性查询

must_not不适用于嵌套弹性查询
EN

Stack Overflow用户
提问于 2019-11-29 06:17:58
回答 1查看 146关注 0票数 1

我有个问题。假设同一个客户的id '11‘有2个交易,其中一个交易客户购买了’清洁‘产品,第二个交易客户购买了’护肤‘product.Now,我想过滤掉购买产品’清洗‘而不是’护肤‘的客户,但当我试图按客户id’11‘汇总时,我得到了客户,因为在第一个交易中,他没有购买“皮肤护理”产品,如何使客户的整个交易变得有弹性,而没有一个transaction.Please帮助我解决问题。

这些是交易-

代码语言:javascript
复制
  {
              "transactionId" : "1211",
              "CDID" : "11",
              "transactionDate" : "2019-06-24T09:35:30.2117315Z",
              "lineItems" : [
                {
                  "description" : "BUBBLE BUBBLE MILD FOAMING CLEANSER",
                  "markdownFlag" : "N",
                  "quantity" : 1,
                  "rate" : 14,
                  "value" : 14,
                  "discount" : 0,
                  "amount" : 13.33,
                  "grossAmount" : 14,
                  "itemDetails" : {
                    "itemName" : "BUBBLE BUBBLE MILD FOAMING CLEANSER",
                    "retailDepartmentName" : "CLEANSING",
                  }
                }
              ]
    }

    {
              "transactionId" : "1232",
              "CDID" : "11",
              "transactionDate" : "2019-06-24T09:35:30.2117315Z",
              "lineItems" : [
                {
                  "description" : "BUBBLE BUBBLE MILD FOAMING CLEANSER",
                  "markdownFlag" : "N",
                  "quantity" : 1,
                  "rate" : 14,
                  "value" : 14,
                  "discount" : 0,
                  "amount" : 13.33,
                  "grossAmount" : 14,
                  "itemDetails" : {
                    "itemName" : "BUBBLE BUBBLE MILD FOAMING CLEANSER",
                    "retailDepartmentName" : "SKIN CARE",
                  }
                }
              ]
    }

  • lineItems是嵌套型
  • ,交易是由相同的客户
  • 完成的,我试图让购买“清洁”但没有购买“护肤品”的客户进行交易,但不会得到结果。

我的问题-

代码语言:javascript
复制
{
  "aggs": {
    "CDID": {
      "terms": {
        "field": "CDID.keyword",
        "size": 10
      },
      "aggs": {
        "lineItems1": {
          "filter": {
            "nested": {
              "path": "lineItems",
              "query": {
                "bool": {
                  "must": [
                    {
                      "bool": {
                        "must_not": [
                          {
                            "match": {
                              "lineItems.itemDetails.retailDepartmentName.keyword": "SKIN CARE"
                            }
                          }
                        ],
                        "must": [
                          {
                            "match": {
                              "lineItems.itemDetails.retailDepartmentName.keyword": "CLEANSING"
                            }
                          }
                        ]
                      }
                    }
                  ]
                }
              }
            }
          },
          "aggs": {
            "nested_path": {
              "nested": {
                "path": "lineItems"
              },
              "aggs": {
                "sum1": {
                  "sum": {
                    "field": "lineItems.quantity"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

结果-

代码语言:javascript
复制
  "aggregations" : {
    "CDID" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 0,
      "buckets" : [
        {
          "key" : "11",
          "doc_count" : 2,
          "lineItems1" : {
            "doc_count" : 1,
            "nested_path" : {
              "doc_count" : 1,
              "sum1" : {
                "value" : 1.0
              }
            }
          }
        }
      ]
    }
  }

UPDATE-Still没有找到答案

EN

回答 1

Stack Overflow用户

发布于 2019-11-29 07:35:32

在下面的查询中,您可以获得结果。

映射查询:

代码语言:javascript
复制
PUT /<index_name>
{
    "mappings" : {
        "properties" : {
            "transactionId": {
              "type": "text"
            },
            "CDID": {
              "type": "text"
            },
             "transactionDate": {
              "type": "text"
            },
            "lineItems" : {
                "type" : "nested"
            }
        }
    }
}

样本数据映射:

代码语言:javascript
复制
POST /<index_name>/_doc
{
  "transactionId": "1211",
  "CDID": "11",
  "transactionDate": "2019-06-24T09:35:30.2117315Z",
  "lineItems": [
    {
      "description": "BUBBLE BUBBLE MILD FOAMING CLEANSER",
      "markdownFlag": "N",
      "quantity": 1,
      "rate": 14,
      "value": 14,
      "discount": 0,
      "amount": 13.33,
      "grossAmount": 14,
      "itemDetails": {
        "itemName": "BUBBLE BUBBLE MILD FOAMING CLEANSER",
        "retailDepartmentName": "CLEANSING"
      }
    }
  ]
}

搜索查询:

代码语言:javascript
复制
GET /test_trans/_search
{
  "query": {
    "nested": {
      "path": "lineItems",
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "lineItems.itemDetails.retailDepartmentName": "CLEANSING"
              }
            }
          ],
          "must_not": [
            {
              "match": {
                "lineItems.itemDetails.retailDepartmentName": "SKIN CARE"
              }
            }
          ]
        }
      },
      "score_mode": "avg"
    }
  },
  "aggs": {
    "nested_path": {
      "nested": {
        "path": "lineItems"
      },
      "aggs": {
        "sum1": {
          "sum": {
            "field": "lineItems.quantity"
          }
        }
      }
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59099632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档