代码之家  ›  专栏  ›  技术社区  ›  Sajjad Ashraf

弹性搜索仅当数组中存在所有值时选择文档

  •  1
  • Sajjad Ashraf  · 技术社区  · 8 年前

    我的索引中有很多产品,每个产品都有这个文档结构

    {
      "id": 59342,
      "days": [
        {
          "date":  "2018-08-14",
          "rate": 101.00
        } 
        , 
        {
          "date":  "2018-08-15",
          "rate": 200.00
        }
        , 
        {
          "date":  "2018-08-18",
          "rate": 200.00
        }
      ]
    } 
    

    现在我只想在 days 数组包含介于 2018-08-14 到 2018-08-16

    {
      "query": {
        "nested": {
          "path": "days",
          "query": {
            "bool": {
              "must": [
                {
                  "match": {
                    "days.date": "2018-08-14"
                  }
                },
                {
                  "match": {
                    "days.date": "2018-08-15"
                  }
                },
                {
                  "match": {
                    "days.date": "2018-08-16"
                  }
                }
              ]
            }
          }
        }
      }
    }
    

    这是产品的映射数据

    {
      "mappings": {
        "products": {
          "properties": {
            "id": {
              "type": "integer"
            },
            "days": {
              "type": "nested",
              "properties": {
                "date": {
                  "type": "date"
                },
                "rate": {
                  "type": "double"
                }
              }
            }
          }
        }
      }
    }
    
    0 回复  |  直到 8 年前