2013-08-30 16 views
11

マップのIDで結果を切り取るようにElastic Searchの実装を構成しました。そのファセットをユーザーに表示すると、それを表す人間が判読可能な名前を表示できる必要があります。必要なデータはすべてマッピングに含まれていますが、ファセットの一部としてどのように返すことができるかはわかりません。確かにそれは可能ですか?ElasticSearch追加のファセットデータ

次の例を考えると、私は私にthingName(または必要になる可能性がある他のthingプロパティ)にthingIdを相関させるいくつかの方法を提供し、ファセットしたいと思います:

マッピング

{ 
    thingId, 
    thingName 
} 

ファセットクエリ

{ 
    "facets":{ 
    "things":{ "terms":{ "field":"thingId" } } 
    } 
}  

結果

{ 
    "hits":{ 
    "total":3, 
    "max_score":1.0, 
    "hits":[ 
     ... 
    ] 
    }, 
    "facets":{ 
    "things":{ 
     "_type":"terms", 
     "missing":0, 
     "total":3, 
     "other":0, 
     "terms":[ 
     { 
      "term":"5", 
      "count":1 
     }, 
     { 
      "term":"4", 
      "count":1 
     }, 
     { 
      "term":"2", 
      "count":1 
     } 
     ] 
    } 
    } 
} 

編集

This answer Solrの項目の順序があろうと仮定すると、Iプロパティ(thingNamethingId)との両方ファセット結果セット上に、その後だけループの両方をファセットことを示唆について同じである。私はそれがいかに信頼できるか分かりませんが、それはオプションです。

編集2

This answerはそれが上の単一の値とファセットに二つのフィールドを組み合わせることなく、私がやりたいことはできませんことを示唆している:thingId|thingName。理想的ではない。編集3

This answer

は、(上記のように)その上に単一フィールド及びファセットに一緒に値を結合示唆し、それは、インデックス組み合わせに私を必要としない、従って、組み合わせを達成するために用語のスクリプトを使用して値の形式。まだ完璧ではありませんが、最も安っぽい選択肢のようです。

+0

は、単一の文字列に 'thingId'と' thingName'を組み合わせるとでそれを分割アプリケーション層は疑問から外れていませんが、もっと良い解決策があることを本当に望んでいます。 –

+0

私はファセット上でIDを本当に使用する必要があるかどうかを検討する必要があると思います。なぜ、あなたはthingNameを使用しないのですか?あなたはそれについて考えましたか? –

+0

'thingName'はオプションですが、' thingName'が一意であるとは保証できないので、あまり理想的ではありません。 –

答えて

3

スクリプトの使用に満足できない場合は、nested aggregationsという別のオプションを使用して、1.0.0を使用できるとします。

あなたの凝集が、このようなものになります

{ 
    "query": { 
     "match_all": {} 
    }, 
    "aggs": { 
     "theIds": { 
      "terms" : { 
       "field": "thingId" 
      }, 
      "aggs":{ 
       "theNames": { 
        "terms": { 
         "field": "thingName" 
        } 
       } 
      } 
     } 
    } 
} 

を、応答のようなものになります:

"aggregations": { 
     "theIds": { 
     "buckets": [ 
      { 
       "key": "1", 
       "doc_count": 5, 
       "theNames": { 
        "buckets": [ 
        { 
         "key": "AAA", 
         "doc_count": 3 
        }, 
        { 
         "key": "BBB", 
         "doc_count": 3 
        }, 
        { 
         "key": "CCC", 
         "doc_count": 2 
        } 
        ] 
       } 
      }, 
      { 
       "key": "2", 
       "doc_count": 2, 
       "theNames": { 
        "buckets": [ 
        { 
         "key": "AAA", 
         "doc_count": 2 
        } 
        ] 
       } 
      } 
     ] 
     } 
    } 
関連する問題