我有一份表格
的文件'search':
[
{
id:'1',
"content": [
{
"text": "random text .....",
"time": 150.023
},
{
"text": "random text .....",
"time": 160.023
}
]
},
{
id:'2',
"content": [
{
"text": "random text .....",
"time": 150.023
},
{
"text": "random text .....",
"time": 160.023
}
]
}
.
.
.
]
我想搜索文本字段并获取其ID,文本和时间,例如
我的示例文档和索引搜索如下所示
'search':
[
{
id:'1',
"content": [
{
"text": "Algorithm and Data structure",
"time": 150.023
},
{
"text": "Selection Sort",
"time": 160.023
}
]
},
{
id:'2',
"content": [
{
"text": "Database and schema",
"time": 1530.023
}
]
}
.
.
.
]
现在当我搜索" text:Algorithm"然后我需要id:' 1'," text":"算法和数据结构"和"时间":150.023。
如何使用elasticsearch获得上述结果。请提供一些解决方案。提前谢谢。
答案 0 :(得分:1)
在elasticsearch中,搜索是按文档进行的。您可以在搜索中单独获取某些字段,但不能在数组中查找。 这里最好的解决方案是将搜索字段声明为nested,以便您可以进行元素特定搜索,然后获取整个文档,然后在客户端检索您要查找的元素。
或者,您可以更改数据建模并围绕搜索元素建模文档。
这意味着不要将单个文档维护为 -
'search':
[
{
id:'1',
"content": [
{
"text": "random text .....",
"time": 150.023
},
{
"text": "random text .....",
"time": 160.023
}
]
},
{
id:'2',
"content": [
{
"text": "random text .....",
"time": 150.023
},
{
"text": "random text .....",
"time": 160.023
}
]
}
.
.
.
]
您可以在单个文档看起来像上面的文档中维护多个文档的模型 -
{
"id": "1",
"content": {
"text": "random text .....",
"time": 150.023
}
}