gpt4 book ai didi

elasticsearch - 在ElasticSearch中嵌套文档而没有映射类型

转载 作者:行者123 更新时间:2023-12-02 22:54:26 25 4
gpt4 key购买 nike

随着planned removal of mapping types进入ElasticSearch,这是否也意味着弃用嵌套文档和嵌套查询? ElasticSearch如何/将在无类型上下文中支持嵌套对象的查询?

我正在考虑的功能是仅返回匹配搜索条件的嵌套数组中的匹配。

编辑1 :ElasticSearch版本6中的示例映射+查询

ElasticSearch 6映射

{
"rec": {
"mappings": {
"history": {
"properties": {
"dateCompleted": {
"type": "keyword"
},
"dateCreated": {
"type": "keyword"
},
"dateOrdered": {
"type": "keyword"
},
"dateToArrive": {
"type": "keyword"
},
"details": {
"type": "nested",
"properties": {

"clientId": {
"type": "keyword"
},
"company": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"orderNumber": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
}
}

ElasticSearch 6查询
{
"from": 0,
"query": {
"nested": {
"inner_hits": {},
"path": "details",
"query": {
"bool": {
"must": [
{
"match_phrase": {
"details.company.keyword": {
"query": "ABCD"
}
}
}
]
}
}
}
},
"size": 10,
"sort": [],
"_source": false
}

最佳答案

不,删除_type对嵌套文档和查询没有影响。

过去,人们在一个索引中使用不同类型来建模服务器实体。问题是,某些实体具有相同的字段,但字段类型不同。例如“版本”,在一个实体中为字符串,而在另一个实体中为整数。这引起了一个问题,因为此方案没有解决方案。

编辑:
嵌套对象是一种映射数据类型,用于为文档中的复杂属性建模,如下所示:

{
"_id" : "12345",
"user" : { "login":"foo", "email":"foo@example.com"}
}

请注意文档本身内的用户对象或上面映射中的“详细信息”属性。此处提供更多示例: https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html

文档doctype是一组属性,它们通过映射来定义文档结构。

过去,有可能使用两种文档类型在一个索引中对“汽车”和“飞机”进行建模。在当前版本中,只有一种文档类型,主要命名为_doc,它将在以后的版本中完全删除。

在您链接的文档中(删除了类型),有一个很好的示例,其中有多个doctype twitter索引定义了一个索引中的用户和tweet doctype。

关于elasticsearch - 在ElasticSearch中嵌套文档而没有映射类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60275086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com