1

我有一个如下的索引文档结构;

{
   "term":"some term",
   "inlang":"some lang"
   "translations" : {
      {
          "translation":"some translation",
          "outlang":"some lang",
          "translations" : {
              {
                  "translation":"some translation 1"
                  "outlang": "some lang 1"
                  "translations" : {...}
              }
          }
      },
      ...
   } 
}

我想在这些文件中找到翻译。但是,此翻译可以存在于本文档的任何级别。是否可以使用弹性搜索动态搜索词条?

例如,

{
   "query": {
      "*.translation":"searchterm"
   }
}

提前致谢

4

2 回答 2

5

我设法通过以下查询做到了这一点;

{
  "query": {
    "query_string": {
      "query": "someterm",
      "fields": ["*.translation"]
    }
  }
}

或者

{
  "query": {
    "multi_match": {
      "query": "someterm",
      "fields": ["*.translation"]
    }
  }
}

您可以在此处查看 elasticsearch google 群组对话

于 2012-11-04T19:24:43.257 回答
0

不,我不相信这个功能目前内置在 ElasticSearch 中。这个答案表明您可以使用脚本构建功能,但这会非常慢。

一般来说,ES 不能很好地处理嵌套数据。它支持嵌套字段,但许多更高级的搜索功能无法对复杂的嵌套数据进行操作。我的建议是对您的数据进行非规范化处理,以便每个翻译都由索引中的单个项目表示,并通过 ID 号将它们链接起来。

于 2012-11-04T19:12:36.223 回答