2017-08-31 6 views
0

私は3つのドキュメント(ユーザー)を持ち、複数のプログラミング言語の知識を持っているとします(後述のようにスコアが関連付けられています)いくつかの検索キーワードが言語にヒットした場合、そのスコアでソートしますか?フィールド値に基づいてElasticsearch結果を並べ替えます

例えば
// user1 
    { 
     "name": "John Bayes", 
     "prog_langs": [ 
      { 
       "name": "python", 
       "score": 10 
      }, 
      { 
       "name": "java", 
       "score": 500 
      } 
     ] 
    }   



    // user2 
    { 
     "name": "John Russel", 
     "prog_langs": [ 
      { 
       "name": "python", 
       "score": 100 
      }, 
      { 
       "name": "PHP", 
       "score": 200 
      } 
     ] 
    }   



    // user3 
    { 
     "name": "Terry Guy", 
     "prog_langs": [ 
      { 
       "name": "C++", 
       "score": 600 
      }, 
      { 
       "name": "Javascript", 
       "score": 200 
      } 
     ] 
    } 

:「ジョン・パイソン」 を検索するとuser1とuser2は返しますが、user2が最初


を示すべき**私は、ソートや関数を使用しようとしてきたが、私は思います彼らは常にスコアの最低値/最高値/平均値を使用します。

ありがとうございます!


[編集] **私はそれがフルテキスト/マルチマッチした作品は、私が見つけたなしで、私は「prog_langsは」入れ子にしなければならなかったかどうかを確認するために、テストの方法で作業してしまった一方、私はマッピングを変更し、期待どおりに動作します。

ここでは、マルチテキストマッチのフルテキスト検索が現在のクエリとマージする部分だけが欠落しています。

もう一度おねがいします!

+0

なので、現在動作していないのは?あなたがやっている質問とその問題を分かち合うことができますか? – Mysterion

+0

私はすぐに私が持っているクエリで編集を投稿しますが、問題は、私がprog_langsを直接クエリすると、一致したものに基づいてソートできることです。 私の目標は、ユーザーが望むものを入力することができます(文書内のフィールドはすべて検索可能です)。また、prog_langの場合は、一致した言語のスコアでドキュメントを並べ替える必要があります。 –

+0

申し訳ありませんが、私はクエリを見ていて、小さな変更を試みることにしました。私が探していたものを達成したと思います。すべてが期待どおりに機能している場合、ここにすべての人に質問を投稿します! –

答えて

0

私はクエリを修正することができましたが、現在は期待どおりに動作しています。 (prog_langsを

  • 私は、新しいマッピングを行い、いくつかのネストされたオブジェクトを追加しましたので、私の元のクエリは、いくつかの変更を受けなければならなかった:

    私の解決策を投稿する前に、ちょうど心に留めておくためにいくつかのことを残しています今をネストされたタイプのは、私は少なくとも一度


0123と一致するべき必須であること、一致するには、少なくとも2つのフィールドを望んでいた
  • )です
  • 関連する問題