gpt4 book ai didi

arrays - ElasticSearch:检索字符串连接或部分数组

转载 作者:行者123 更新时间:2023-12-02 22:46:59 27 4
gpt4 key购买 nike

我有很多这样的索引文件:

{
"_index":"myindex",
"_type":"somedata",
"_id":"31d3255d-67b4-40e6-b9d4-637383eb72ad",
"_version":1,
"_score":1,
"_source":{
"otherID":"b4c95332-daed-49ae-99fe-c32482696d1c",
"data":[
{
"data":"d2454d41-a74e-43af-b3b0-0febeaf67a99",
"iD":"9362f2eb-9bd7-4924-8b0e-77c27bb0aa56"
},
{
"data":"some text",
"iD":"c554b8ce-c873-4fef-b306-ec65d2f40394"
},
{
"data":"5256983c-ef69-4363-9787-97074297c646",
"iD":"8c90e2be-6042-4450-b0fd-0732900f8f65"
},
{
"data":"other text",
"iD":"8d8f8a61-02d6-4d3e-9912-9ebb5d213c15"
},
{
"data":"3",
"iD":"c880bfdf-eb4b-4c80-9871-fd44e06b2ed2"
}
],
"iD":"31d3255d-67b4-40e6-b9d4-637383eb72ad"
}
}

它的类型映射是这样配置的:
{
"somedata":{
"dynamic_templates":[
{
"defaultIDs":{
"match_pattern":"regex",
"mapping":{
"index":"not_analyzed",
"type":"string"
},
"match":".*(id|ID|iD)"
}
}
],
"properties":{
"otherID":{
"index":"not_analyzed",
"type":"string"
},
"data":{
"properties":{
"data":{
"type":"string"
},
"iD":{
"index":"not_analyzed",
"type":"string"
}
}
},
"iD":{
"index":"not_analyzed",
"type":"string"
}
}
}
}

我希望能够根据其ID检索数据的字符串串联。
例如,给定id c554b8ce-c873-4fef-b306-ec65d2f40394和id 8d8f8a61-02d6-4d3e-9912-9ebb5d213c15,我想检索 some text other text
这些ID在具有不同数据的相同类型的其他文档中重复。

如果这是不可能的(我怀疑是这种情况),我想至少检索包含我请求的数据的部分数组。
这些数组可能会变大(文档数量也会变大),而每次点击我只需要一个或两个元素。

如果我的两个请求均无法满足,您将如何建议更改我的映射以便满足我的需求?

预先感谢乔纳森。

最佳答案

我找到了一种在不更改数据结构的情况下准确完成所需的操作的方法。
(实际上,由于空间和效率的原因,我最终改变了我的数据结构)。

您所要做的就是享受ElasticSearch必须提供的时髦优势:

{
"query" : { "term" : { "otherID" : "b4c95332-daed-49ae-99fe-c32482696d1c" } },
"script_fields" : { "requestedFields" : { "script" : "_source.data.findAll({ it.iD == 'c554b8ce-c873-4fef-b306-ec65d2f40394' || it.iD == '8d8f8a61-02d6-4d3e-9912-9ebb5d213c15'}) data.join(' ') " } }
}

只是说明 flex 搜索到底有多强大。

关于arrays - ElasticSearch:检索字符串连接或部分数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30285319/

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