elasticsearch,Search,Document,elasticsearch" /> elasticsearch,Search,Document,elasticsearch" />

使用elasticsearch在子文档中搜索术语

使用elasticsearch在子文档中搜索术语,search,document,elasticsearch,Search,Document,elasticsearch,我有一个索引文档结构,如下所示 { "term":"some term", "inlang":"some lang" "translations" : { { "translation":"some translation", "outlang":"some lang", "translations" : { { "translation":"

我有一个索引文档结构,如下所示

{
   "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"
   }
}

提前感谢

不,我认为目前ElasticSearch中没有内置此功能。这个答案表明,但这将是非常缓慢的


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

不,我不相信目前ElasticSearch中内置了此功能。这个答案表明,但这将是非常缓慢的


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

我已经通过以下查询成功地做到了这一点

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


您可以看到elasticsearch google group conversation

我已经通过以下查询实现了这一点

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


您可以看到elasticsearch google group conversation

感谢您的回复,我已经通过构建一个如上所述的查询成功地做到了这一点。您可以看到我的答案和google group Conversations感谢您的回复,我已经通过构建一个查询实现了这一点,正如我前面提到的。你可以看到我的答案和谷歌群组对话