当前位置: 首页 > wzjs >正文

网站公网安备链接怎么做常见网页制作软件

网站公网安备链接怎么做,常见网页制作软件,打开全网搜索,晨光文具网站建设策划书好的!为了更清楚地说明flattened类型在查询嵌套数组时可能返回不准确结果的情况,我们可以通过一个具体的例子来展示。这个例子将展示如何在文档中没有完全匹配的嵌套对象时,flattened类型仍然可能返回该文档。 示例文档结构 假设你有以下文…

好的!为了更清楚地说明`flattened`类型在查询嵌套数组时可能返回不准确结果的情况,我们可以通过一个具体的例子来展示。这个例子将展示如何在文档中没有完全匹配的嵌套对象时,`flattened`类型仍然可能返回该文档。

示例文档结构

假设你有以下文档结构,其中`addresses`是一个嵌套数组:

```json

PUT /my_index/_doc/1

{

  "user": {

    "id": 1,

    "name": "John Doe",

    "addresses": [

      {

        "street": "123 Main St",

        "city": "Anytown",

        "state": "NY" // 注意这里 state 是 NY,而不是 CA

      },

      {

        "street": "456 Elm St",

        "city": "Othertown",

        "state": "CA" // 注意这里 city 是 Othertown,而不是 Anytown

      }

    ]

  }

}

```

在这个文档中,`addresses`数组包含两个地址对象:

1. 第一个地址对象的`city`是`"Anytown"`,但`state`是`"NY"`。

2. 第二个地址对象的`state`是`"CA"`,但`city`是`"Othertown"`。

查询示例

假设你希望查询所有`city`为`"Anytown"`且`state`为`"CA"`的地址。如果`addresses`字段被定义为`flattened`类型,你可能会写出以下查询:

```json

GET /my_index/_search

{

  "query": {

    "bool": {

      "must": [

        {

          "term": {

            "user.addresses.city": {

              "value": "Anytown"

            }

          }

        },

        {

          "term": {

            "user.addresses.state": {

              "value": "CA"

            }

          }

        }

      ]

    }

  }

}

```

查询结果

由于`flattened`类型会将嵌套结构展开为多个字段路径,Elasticsearch 无法保证`city`和`state`属于同一个嵌套对象。因此,查询可能会返回不准确的结果。

在上面的例子中,`flattened`类型会将`addresses`展开为以下字段路径:

```json

{

  "user.addresses.street.0": "123 Main St",

  "user.addresses.city.0": "Anytown",

  "user.addresses.state.0": "NY",

  "user.addresses.street.1": "456 Elm St",

  "user.addresses.city.1": "Othertown",

  "user.addresses.state.1": "CA"

}

```

当你执行查询时,Elasticsearch 会分别匹配`city`和`state`,但无法保证它们属于同一个嵌套对象。因此,查询可能会返回包含以下内容的文档:

```json

{

  "hits": {

    "total": {

      "value": 1,

      "relation": "eq"

    },

    "max_score": 1.0,

    "hits": [

      {

        "_index": "my_index",

        "_type": "_doc",

        "_id": "1",

        "_score": 1.0,

        "_source": {

          "user": {

            "id": 1,

            "name": "John Doe",

            "addresses": [

              {

                "street": "123 Main St",

                "city": "Anytown",

                "state": "NY"

              },

              {

                "street": "456 Elm St",

                "city": "Othertown",

                "state": "CA"

              }

            ]

          }

        }

      }

    ]

  }

}

```

问题解释

尽管文档中没有完全匹配`city`为`"Anytown"`且`state`为`"CA"`的地址对象,但查询仍然返回了该文档。这是因为`flattened`类型无法保证`city`和`state`属于同一个嵌套对象。具体来说:

• 第一个地址对象的`city`是`"Anytown"`,但`state`是`"NY"`。

• 第二个地址对象的`state`是`"CA"`,但`city`是`"Othertown"`。

由于`flattened`类型将这些字段路径展开后,Elasticsearch 会分别匹配`city`和`state`,而不会检查它们是否属于同一个嵌套对象。因此,只要文档中存在满足条件的字段路径,即使这些字段路径不属于同一个嵌套对象,查询也会返回该文档。

使用`nested`类型的正确结果

如果`addresses`字段被定义为`nested`类型,查询会正确地返回没有匹配结果的情况:

```json

PUT /my_index

{

  "mappings": {

    "properties": {

      "user": {

        "properties": {

          "id": { "type": "integer" },

          "name": { "type": "text" },

          "addresses": { "type": "nested" }

        }

      }

    }

  }

}

```

查询:

```json

GET /my_index/_search

{

  "query": {

    "nested": {

      "path": "user.addresses",

      "query": {

        "bool": {

          "must": [

            {

              "term": {

                "user.addresses.city": {

                  "value": "Anytown"

                }

              }

            },

            {

              "term": {

                "user.addresses.state": {

                  "value": "CA"

                }

              }

            }

          ]

        }

      }

    }

  }

}

```

返回结果:

```json

{

  "hits": {

    "total": {

      "value": 0,

      "relation": "eq"

    },

    "max_score": null,

    "hits": []

  }

}

```

`nested`类型会正确地检查每个嵌套对象的完整性,因此不会返回不匹配的文档。

总结

• `flattened`类型的限制:`flattened`类型会将嵌套结构展开为多个字段路径,无法保证这些字段属于同一个嵌套对象。因此,在查询时可能会返回不准确的结果。

• `nested`类型的优势:`nested`类型可以保持嵌套对象的完整性,支持复杂的嵌套查询,能够精确匹配嵌套结构。

希望这个例子清楚地展示了`flattened`类型在查询嵌套数组时可能返回不准确结果的情况。

这里`flattened`类型在处理嵌套对象时出现不准确结果的问题,主要是因为嵌套对象是列表(数组)结构。当嵌套对象是数组时,`flattened`类型会将数组中的每个对象展开为多个字段路径,而这些字段路径之间没有关联关系,因此无法保证它们属于同一个嵌套对象。
为什么`flattened`类型在数组结构中会出现问题?

当嵌套对象是数组时,`flattened`类型会将数组中的每个对象的字段路径展开为独立的字段。例如,假设你有以下文档结构:

```json
{
  "user": {
    "id": 1,
    "name": "John Doe",
    "addresses": [
      {
        "street": "123 Main St",
        "city": "Anytown",
        "state": "NY"
      },
      {
        "street": "456 Elm St",
        "city": "Othertown",
        "state": "CA"
      }
    ]
  }
}
```


如果`addresses`字段被定义为`flattened`类型,Elasticsearch 会将`addresses`展开为以下字段路径:

```json
{
  "user.addresses.street.0": "123 Main St",
  "user.addresses.city.0": "Anytown",
  "user.addresses.state.0": "NY",
  "user.addresses.street.1": "456 Elm St",
  "user.addresses.city.1": "Othertown",
  "user.addresses.state.1": "CA"
}
```


当你执行查询时,Elasticsearch 会分别匹配这些字段路径,但无法保证它们属于同一个嵌套对象。因此,查询可能会返回不准确的结果。


示例:`flattened`类型在数组结构中的问题

假设你希望查询所有`city`为`"Anytown"`且`state`为`"CA"`的地址。如果`addresses`字段被定义为`flattened`类型,你可能会写出以下查询:

```json
GET /my_index/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "user.addresses.city": {
              "value": "Anytown"
            }
          }
        },
        {
          "term": {
            "user.addresses.state": {
              "value": "CA"
            }
          }
        }
      ]
    }
  }
}
```
由于`flattened`类型将数组中的每个对象的字段路径展开为独立的字段,Elasticsearch 会分别匹配`city`和`state`,但无法保证它们属于同一个嵌套对象。因此,查询可能会返回包含以下内容的文档:

```json
{
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 1.0,
    "hits": [
      {
        "_index": "my_index",
        "_type": "_doc",
        "_id": "1",
        "_score": 1.0,
        "_source": {
          "user": {
            "id": 1,
            "name": "John Doe",
            "addresses": [
              {
                "street": "123 Main St",
                "city": "Anytown",
                "state": "NY"
              },
              {
                "street": "456 Elm St",
                "city": "Othertown",
                "state": "CA"
              }
            ]
          }
        }
      }
    ]
  }
}
```


尽管文档中没有完全匹配`city`为`"Anytown"`且`state`为`"CA"`的地址对象,但查询仍然返回了该文档。这是因为`flattened`类型无法保证`city`和`state`属于同一个嵌套对象。


如果嵌套对象不是数组结构呢?

如果嵌套对象不是数组结构,`flattened`类型通常不会出现这种问题。例如,假设你有以下文档结构:

```json
{
  "user": {
    "id": 1,
    "name": "John Doe",
    "address": {
      "street": "123 Main St",
      "city": "Anytown",
      "state": "CA"
    }
  }
}
```


在这种情况下,`address`是一个嵌套对象,而不是数组。如果`address`字段被定义为`flattened`类型,Elasticsearch 会将`address`展开为以下字段路径:

```json
{
  "user.address.street": "123 Main St",
  "user.address.city": "Anytown",
  "user.address.state": "CA"
}
```
当你执行查询时,Elasticsearch 会匹配这些字段路径,而这些字段路径属于同一个嵌套对象,因此不会出现不准确的结果。
示例:`flattened`类型在非数组结构中的表现

假设你希望查询所有`city`为`"Anytown"`且`state`为`"CA"`的地址。如果`address`字段被定义为`flattened`类型,你可能会写出以下查询:

```json
GET /my_index/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "user.address.city": {
              "value": "Anytown"
            }
          }
        },
        {
          "term": {
            "user.address.state": {
              "value": "CA"
            }
          }
        }
      ]
    }
  }
}
```


返回结果:

```json
{
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 1.0,
    "hits": [
      {
        "_index": "my_index",
        "_type": "_doc",
        "_id": "1",
        "_score": 1.0,
        "_source": {
          "user": {
            "id": 1,
            "name": "John Doe",
            "address": {
              "street": "123 Main St",
              "city": "Anytown",
              "state": "CA"
            }
          }
        }
      }
    ]
  }
}
```
在这种情况下,`flattened`类型可以正确匹配`city`和`state`,因为它们属于同一个嵌套对象。
总结
• `flattened`类型在数组结构中的问题:

• 当嵌套对象是数组时,`flattened`类型会将数组中的每个对象的字段路径展开为独立的字段。

• Elasticsearch 无法保证这些字段路径属于同一个嵌套对象,因此查询可能会返回不准确的结果。


• `flattened`类型在非数组结构中的表现:

• 当嵌套对象不是数组时,`flattened`类型可以正确匹配字段路径,因为这些字段路径属于同一个嵌套对象。

• 查询结果通常是准确的。

因此,`flattened`类型在处理嵌套数组时需要特别小心,而`nested`类型在这种场景下通常是更好的选择,因为它可以保持嵌套对象的完整性并支持复杂的嵌套查询。


文章转载自:

http://UMVVF7cr.fnmtc.cn
http://fY9fthpQ.fnmtc.cn
http://5U2KTLoI.fnmtc.cn
http://2ZZ2u33w.fnmtc.cn
http://dTCy13qT.fnmtc.cn
http://0vrMytPC.fnmtc.cn
http://tlbb2238.fnmtc.cn
http://jErpL2pt.fnmtc.cn
http://IbK0UEx7.fnmtc.cn
http://v0oXZDZ1.fnmtc.cn
http://MguZxecf.fnmtc.cn
http://z5AaxfMF.fnmtc.cn
http://9MgDkvoR.fnmtc.cn
http://hnCjHSdr.fnmtc.cn
http://REcMaGIE.fnmtc.cn
http://06FE13lr.fnmtc.cn
http://UtYLeQia.fnmtc.cn
http://zRnmtteY.fnmtc.cn
http://AeTqIolk.fnmtc.cn
http://h4FGgFyl.fnmtc.cn
http://TKXvflpL.fnmtc.cn
http://UlDdGil4.fnmtc.cn
http://mRjazpX6.fnmtc.cn
http://LdYL3iLu.fnmtc.cn
http://Pwc2BXao.fnmtc.cn
http://Qy7aemiD.fnmtc.cn
http://nmNEQjly.fnmtc.cn
http://ZIhVj0Tm.fnmtc.cn
http://Uiif48qr.fnmtc.cn
http://Na6aCbHx.fnmtc.cn
http://www.dtcms.com/wzjs/641505.html

相关文章:

  • 浙江省建设信息港的网站想做网店怎么做
  • 网站域名免费注册网站后端建设
  • 武安市网站建设费用新房装修图片
  • 怎么免费永久创建网站无广告谷歌商店app下载
  • 黄冈网站推广在线观看用什么做响应式网站
  • 农业建设项目管理信息系统网站做网站建设还有钱赚吗
  • 做网站 没内容沈阳工务建设集团网站
  • 韶关市建设局官方网站中企动力重庆分公司怎么样
  • 做兼职什么网站比较好手机网站视频无法播放是怎么回事
  • 浙江天奥建设集团网站陵县网站建设
  • 微网站工程案例展示遵义网站设计
  • 有电脑网站怎样建手机网站 备案信息
  • 做风筝网站深圳建科院公司网站
  • 做网站推广对电脑有什么要求在线免费设计logo
  • 哪里能给人做网站国家高新技术企业认定的要求
  • 湖北定制型网站建设网站首页排版
  • 凡科互动投票破解阿里云wordpress优化
  • 山东建设工程管理局网站建筑网格图绘制
  • 石家庄网站制作哪家好上海招聘网官网
  • 企业网站建设选题背景百度竞价推广有哪些优势
  • 个人网站建设方案书备案深圳较便宜的网站建设
  • 长沙网站托管seo优化公司flash个人网站模板
  • 下载官方购物网站自我介绍ppt配图
  • 美食网站建设方案怎样做一个网站平台
  • 网站系统建设目标范本房管局
  • 滨江道做网站公司node.js做网站开发
  • 石家庄网站系统建设河南省建设监理协会网站人才十
  • 局域网电脑做网站服务器青岛建网站
  • 新楼盘网站模板动漫制作专业有哪些课程
  • 天津重型网站建设推荐织梦 网站无法显示该页面