gpt4 book ai didi

elasticsearch - 如何使用Elasticsearch获取正确的子节点

转载 作者:行者123 更新时间:2023-12-03 02:29:29 24 4
gpt4 key购买 nike

我正在尝试从特定文档中获取数据的特定部分。该文档包含产品信息。这只是文档的一小段,以更好地说明它。

"_source": {
"product": {
"code": "AM109",
"stuff": "98989",
"languages": [
{
"language": "en",
"labels": {
"name": "Fusce nulla augue",
"description": "Cras ultricies diam vel orci feugiat ornare. Nulla convallis ligula quis fringilla suscipit. Proin malesuada ligula enim, sit amet semper lorem imperdiet in."
}
},
{
"language": "es",
"labels": {
"name": "Aliquam ut odio quam",
"description": "Nulla pulvinar tortor eu ex vestibulum, nec dictum diam tristique. Pellentesque vitae nibh diam. In id purus at sapien eleifend pulvinar non at velit."
}
}
}
}

该文档包含不同国家/地区的不同信息,以及不同语言的标签。为了解释,我使用标签。
我需要根据代码(product.code)获得正确产品的信息,对于语言,它应该只按要求返回该语言的标签。例如。如果要求使用语言es:
"_source": {
"product": {
"code": "AM109",
"stuff": "98989",
"languages": [
{
"language": "es",
"labels": {
"name": "Aliquam ut odio quam",
"description": "Nulla pulvinar tortor eu ex vestibulum, nec dictum diam tristique. Pellentesque vitae nibh diam. In id purus at sapien eleifend pulvinar non at velit."
}
}
}
}

我已经尝试过使用嵌套选项和过滤器进行此操作,但是无法获得正确的返回数据。

这是一个现有系统,因此我无法更改结构,但是可以根据需要更改映射并重新填充索引。

谁能帮我这个忙?

最佳答案

由于所有文档都包含有关所有语言的信息,并且您在给定时间只搜索一种语言,因此我建议采用以下方法:

  • 将文档存储在特定于语言的索引中(优势:相同的字段名称)
  • 您可以始终将文档发送到同一索引,但是可以定义一个接收管道,该管道将特定于语言的后缀(例如“_en”)附加到_index -field中,以将文档路由/存储在特定于语言的索引
  • 调整查询以仅查询包含
  • 语言的索引

    如果无法执行最后一步,则可以定义一个别名,指向所有特定于语言的索引,并在查询过滤器的字段中包含语言代码

    关于elasticsearch - 如何使用Elasticsearch获取正确的子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60322304/

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