gpt4 book ai didi

elasticsearch - ElasticSearch仅检索与单个文档中的术语匹配的列表元素

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

给定此文档结构。

{
"title":"Lord of the rings",
"id":"123abc",
"pages":[
{
"pageNumber":1,
"content":"Lorem ipsum lorem ipsum lorem ipsum"
},
{
"pageNumber":2,
"content":"dolor sit dolor sit dolor sit"
}
]
}

和这个查询
{
"query":{
"match":{
"pages.content":"lorem"
}
}
}

结果, flex 有没有办法给我这样的结果:
{
"title":"Lord of the rings",
"id":"123abc",
"pages":[
{
"pageNumber":1,
"content":"Lorem ipsum lorem ipsum lorem ipsum"
}
]
}

因此,如果我有数百页,我只会得到与我的学期相符的页面吗?

我虽然要为页面创建索引,但是如何从文档中获取所有元数据?应该说从同一本“书”中的所有页面文档中复制此元数据吗?
就性能而言,最好的方法是什么?

最佳答案

是的,共享一些通用元数据的文档在NoSQL数据存储区中是很正常的(并且经常是必要的)。至于替代方法,您可以使用highlighting或什至一些painless scripting,但我建议遵循以下方法:

POST pages/_doc
{
"book": {
"title": "Lord of the rings",
"id": "123abc",
"metadata": {
"num_of_pages": 300
}
},
"page": {
"pageNumber": 1,
"content": "Lorem ipsum lorem ipsum lorem ipsum"
}
}

POST pages/_doc
{
"book": {
"title": "Lord of the rings",
"id": "123abc",
"metadata": {
"num_of_pages": 300
}
},
"page": {
"pageNumber": 2,
"content": "dolor sit dolor sit dolor sit"
}
}

然后
GET pages/_search
{
"query": {
"match": {
"page.content": "lorem"
}
}
}

这要简单得多,并且扩展性也相当好。

关于elasticsearch - ElasticSearch仅检索与单个文档中的术语匹配的列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60841019/

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