2017-01-20 5 views
0

私はフィールド画像を持っており、ユーザーの検索を実装しています。
目標は、最初に人々の写真を表示し、次に人々を表示します。画像が無効な場合のスコアアップ - elasticsearch-1.7

私はElasticsearch 1.7プロジェクトを維持しており、バージョンをアップグレードすることはできません。

マッピング:ユーザーが写真を持っていない場合はdoens

"user": { 
    "_all": { 
     "auto_boost": true 
    }, 
    "properties": { 
     "id": { 
     "type": "string", 
     "store": true 
     }, 
     "picture": { 
     "type": "string", 
     "store": true 
     } 

それはクエリが存在しているようです/ミッシングクエリがElasticSearch 1.7 (doc)

には存在しません、それはnullとして格納されます。彼は1を持っている場合は、ファイル名で保存されています。私も試した

{ 
    "track_scores": true, 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "filtered": { 
      "filter": { 
       "bool": { 
       "must": [ 
        { 
        "term": { 
         "user.enabled": true 
        } 
        } 
       ] 
       } 
      } 
      } 
     } 
     ], 
     "should": [ 
     { 
      "match": { 
      "picture": { 
       "query": ".jpg .png .JPG .PNG", 
       "operator": "or" 
      } 
      } 
     } 
     ] 
    } 
    } 
} 

:まだ

/* ... */ 
"should": [ 
    { 
     "terms": { 
     "minimum_match": 1, 
     "teacher.picture": [ 
      ".jpg", 
      ".png", 
      ".JPG", 
      ".PNG" 
     ] 
     } 
    } 
    ] 

私はxxx.jpgまたはyyyy.PNG

私はそのようなクエリを実行しようとしました画像なしのものと画像が混ざり合った結果がある...

これをどのように達成できるか知っていますか?

答えて

1

あなたの目標は、最初に写真を撮った人と写真を撮っていない人を最初に見せることです。したがって、単純に並べ替えで_missingを使うことができます。

次の変更では、画像を持たないユーザーを取得できないため、存在するクエリを追跡しないでください。

/* ... */ 
"should": [ 
    { 
     "terms": { 
     "minimum_match": 1, 
     "teacher.picture": [ 
      ".jpg", 
      ".png", 
      ".JPG", 
      ".PNG" 
     ] 
     } 
    } 
    ] 

Instead use _missing in score.

{ 
    "track_scores": true, 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "filtered": { 
      "filter": { 
       "bool": { 
       "must": [ 
        { 
        "term": { 
         "user.enabled": true 
        } 
        } 
       ] 
       } 
      } 
      } 
     } 
     ], 
     "should": [ 
     { 
      "match": { 
      "picture": { 
       "query": ".jpg .png .JPG .PNG", 
       "operator": "or" 
      } 
      } 
     } 
     ] 
    } 
    }, 
    "sort" : [ 
     { "picture" : {"missing" : "_last"} }, 
    ] 
} 

この情報がお役に立てば幸いです。 ありがとう

+0

FYI、私は追加画像を削除する必要があります。ありがとう、それは魅力のように動作します – goto

+0

はい、プロフィールピクチャのない人が望むように私はあなたの目的を意識していなかったので、私はそれらを保管しました。私はあなたのために働いてうれしいです。ありがとう – user3775217

関連する問題