【问题标题】:Searching term in subdocuments with elasticsearch使用 elasticsearch 在子文档中搜索词
【发布时间】:2012-10-22 01:15:15
【问题描述】:

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

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

提前致谢

【问题讨论】:

    标签: search document elasticsearch


    【解决方案1】:

    我已经通过以下查询做到了这一点;

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

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

    可以看到elasticsearch google群聊here

    【讨论】:

      【解决方案2】:

      不,我认为目前 ElasticSearch 还没有内置此功能。这个答案建议you could build the functionality with a script,但它会超级慢。

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

      【讨论】:

      • 感谢您的回复,我已经设法通过构建如上所述的查询来做到这一点。你可以看到我的回答和谷歌群聊
      猜你喜欢
      • 2014-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-21
      • 1970-01-01
      • 2021-05-20
      • 2015-12-11
      • 2023-01-30
      相关资源
      最近更新 更多