当前位置: 首页 > 知识库问答 >
问题:

Elasticsearch mappings api未将我的列表显示为嵌套类型

岑毅庵
2023-03-14

弹性搜索无法将我的对象列表识别为嵌套类型。我希望这种情况能够自动发生,而不需要为每个这样的字段更新映射。我需要_mappingsAPI的响应有某种标识符来区分列表类型的属性。

例如:当我在新的测试索引('mapping_index')上索引这样的文档时

{
    "text":"value",
    "list":[{"a":"b","c":"d"},{"a":"q","c":"f"}]
}

和hit mappings api

localhost:9200/mapping_index/_mapping

我明白了

{
    "mapping_index": {
        "mappings": {
            "_doc": {
                "properties": {
                    "list": {
                        "properties": {
                            "a": {
                                "type": "text",
                                "fields": {
                                    "keyword": {
                                        "type": "keyword",
                                        "ignore_above": 256
                                    }
                                }
                            },
                            "c": {
                                "type": "text",
                                "fields": {
                                    "keyword": {
                                        "type": "keyword",
                                        "ignore_above": 256
                                    }
                                }
                            }
                        }
                    },
                    "text": {
                        "type": "text",
                        "fields": {
                            "keyword": {
                                "type": "keyword",
                                "ignore_above": 256
                            }
                        }
                    }
                }
            }
        }
    }
}

我想要像这样的

"type" : "nested"

对于该响应中的“列表”键,可以向使用ES中存储的这些字段的另一个服务传递该“列表”是一个多值键。

我读过关于动态模板的书,认为它可能对我有帮助,但我不确定(https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic-templates.html).

非常感谢您的帮助。

共有1个答案

苏硕
2023-03-14

你可以用dynamic_templates

匹配映射类型:“对象”将接受任何对象类型,并将其更改为嵌套

{
  "mappings": {
    "dynamic_templates": [
      {
        "objects": {
          "match": "*",
          "match_mapping_type": "object",
          "mapping": {
            "type": "nested"
          }
        }
      }
    ]
  }
}

数据:

{
  "list": [
    {
      "a": "b",
      "c": "d"
    },
    {
      "a": "q",
      "c": "f"
    }
  ]
}

结果:

 "index80" : {
    "mappings" : {
      "dynamic_templates" : [
        {
          "objects" : {
            "match" : "*",
            "match_mapping_type" : "object",
            "mapping" : {
              "type" : "nested"
            }
          }
        }
      ],
      "properties" : {
        "list" : {
          "type" : "nested",
          "properties" : {
            "a" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            },
            "c" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            }
          }
        }
      }
    }
  }
}
 类似资料:
  • 问题内容: 我该如何打开一个列表,例如: 进入列表列表,例如: 即我想将有序元素分组在列表中,并将其保留在有序列表中。我怎样才能做到这一点? 谢谢 问题答案: 假设data_list的长度是三的倍数

  • 问题内容: 我有一个列表,显示带有餐厅徽标等的餐厅列表。 风景 当您点击餐厅时,我希望它根据所点击的商品显示另一个列表。 第二种观点 型号 店铺 JSON 我想显示所选餐厅的菜单项列表(项目,项目,项目…),但是当我使用嵌套列表时,我必须使用与上一个列表相同的模板,这不适合我的需要。目前,我得到的物品数量正确,但没有任何显示。谢谢,您能帮我解决我的问题吗。 问题答案: 在获得解决方案之前,这里有一

  • 我正在编写一个使用嵌套ViewPager的应用程序。每个父ViewPager包含7个子ViewPager。 对于第一个父视图,它可以正常工作,但当它到达下一页时,它在子视图页面的位置显示为空白。 如果使用嵌套视图寻呼机是可行的,这里有什么建议吗?如果是的话,我怎么能避免这个案子呢? 父ViewPager布局与子片段相同: 这是我在父ViewPager片段中实现的子ViewPager适配器:

  • 问题内容: 我正在尝试建立我的第一个响应式布局。我想以垂直线显示列表项,具体取决于宽度。 如果浏览器调整大小,我希望它成为 有人能帮我吗?我已经尝试了几个小时,却什么也没得到。我试过使用表,但我也不能那样做。 问题答案: 使用 CSS3 列可以很容易地做到这一点。这是一个示例,HTML:

  • 我在Firebase中有以下数据: 在Flutter中,我有以下两个对象: 我正在尝试将Firebase中的集合嵌套贴图转换为Flatter中的列表,但遇到了问题。在Flatter中将具有贴图字段的贴图对象转换为列表的最佳方法是什么? 我知道我在处理map对象时遇到了问题,根据我的方法,我收到了不同的错误,但通常类似于以下情况之一: 错误1:“键入“\u InternalLinkedHashMap

  • 我正在制作一个程序,将图片转换成灰度形式,然后从灰度形式转换成公平格式。 我正在使用嵌套的for-loops来转换嵌套列表。这工作得很好,但我希望使用流来实现,如果使用流,输出会发生变化,但我认为应该得到相同的输出。我错在哪? grayPhoto是 你们有没有看到我做错了什么或者小溪应该是怎样的?