我有一个索引文档结构,如下所示;
{
"term":"some term",
"inlang":"some lang"
"translations" : {
{
"translation":"some translation",
"outlang":"some lang",
"translations" : {
{
"translation":"some translation 1"
"outlang": "some lang 1"
"translations" : {...}
}
}
},
...
}
}
我想在这些文件中找到翻译。但是,此翻译可以存在于本文档的任何级别。是否可以使用elasticsearch动态搜索术语?
例如,
{
"query": {
"*.translation":"searchterm"
}
}
提前致谢
答案 0 :(得分:5)
我已设法通过以下查询来完成此操作;
{
"query": {
"query_string": {
"query": "someterm",
"fields": ["*.translation"]
}
}
}
或
{
"query": {
"multi_match": {
"query": "someterm",
"fields": ["*.translation"]
}
}
}
您可以看到elasticsearch google群组对话here
答案 1 :(得分:0)
不,我不相信此功能目前已内置于ElasticSearch中。这个答案表明you could build the functionality with a script,但它会超级慢。
通常,ES不能很好地嵌套数据。它支持嵌套字段,但许多更高级的搜索功能无法在复杂的嵌套数据上运行。我的建议是对数据进行非规范化处理,以便每个翻译都由索引中的单个项目表示,并使用ID号码在它们之间建立链接。