1

私は以下のようなインデックスドキュメント構造を持っています。

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

前もって感謝します

4

2 に答える 2

5

私は次のクエリでそれを行うことができました。

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

また

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

ここでelasticsearchグーグルグループの会話を見ることができます

于 2012-11-04T19:24:43.257 に答える
0

いいえ、現時点ではこの機能がElasticSearchに組み込まれているとは思いません。この回答は、スクリプトを使用して機能を構築できることを示唆していますが、非常に時間がかかります。

一般に、ESはネストされたデータとうまく連携しません。ネストされたフィールドをサポートしますが、より高度な検索機能の多くは、複雑なネストされたデータを操作できません。私の提案は、すべての翻訳がインデックス内の単一の項目で表されるようにデータを非正規化し、それらをID番号でリンクすることです。

于 2012-11-04T19:12:36.223 に答える