2012-08-31 9 views
6

弾性検索、二重のファセット

curl -XGET http://www.my_server:9200/idx_occurrence/Occurrence/_search?pretty=true -d '{ 
    "query": { 
     "query_string" : { 
      "fields" : ["genus_interpreted","dataset"], 
      "query": "Pica 2", 
      "default_operator" : "AND" 
     } 
    }, 
    "facets": { 
     "test": { 
      "terms": { 
       "fields" :["decimalLatitude","decimalLongitude"], 
       "size" : 500000000 
      } 
     } 
    } 
}' 

これは、任意の...予想以上の結果数の2倍を与えますアイディア?答えのよりrelevants部分がある

...

_shards":{ 
    "total":5, 
    "successful":5, 
    "failed":0 
}, 
"hits":{ 
    "total":**37**, 
    "max_score":3.9314494, 
    "hits":[{ 

総ヒット数、37は私がファセットを適用しない場合は、クエリの結果です。この合計がそう

"facets":{ 
    "test":{ 
     "_type":"terms", 
     "missing":0, 
     "total":**74**, 
     "other":0, 
     "terms":[ 
      {"term":"167.21665954589844","count":5}, 
      {"term":"167.25","count":4}, 
      {"term":"167.14999389648438","count":4}, 
      {"term":"167.1041717529297","count":4}, 
      {"term":"-21.04166603088379","count":4},..... 

(下記参照)ファセットに合計の半分であり、ファセットグループは、(緯度によって、次に経度によって)separetely行われます。

複数のレコードが緯度(ただし経度が異なる)またはviceversaを共有できるため、緯度または経度のみでグループ化することはできません。

+0

あなたが得る出力を表示することができます。ここでは、それを試してみる助けるべき例はありますか? – CharlesB

+0

私は本当に質問を解決するとは思わない回答を受け入れることができません... – user1249791

答えて

4

複数のフィールド(緯度と経度)でTermsFacetを作成しています。つまり、緯度と経度は固有のフィールドでまとめられています。単一の値ごとに緯度または経度のいずれかのエントリが表示されます。あなたが74項目を取り戻すという事実は、あなたの索引に74の別個の緯度と経度の値があることを証明します。あなたは何を正確に達成したいですか?各緯度経度ペアの1つのファセットエントリ?

  • がそれに続い面ペア自身とが含まれているインデックスに追加フィールドを追加します
  • 用語スクリプトを使用して、その場でlatitue経度のペアを作成します。その場合は次の2つのオプションがあります。詳細を知るにはdocumentationをご覧ください。
{ 
    "query" : { 
     "match_all" : { } 
    }, 
    "facets" : { 
     "tags" : { 
      "terms" : { 
       "field" : "latitude", 
       "script" : "term + \"_\" + _source.longitude" 
      } 
     } 
    } 
} 
+0

私はまったく同じ場所(同じ緯度と経度)を共有するすべてのデータをグループ化するために正確に達成したいと思います。新しいフィールドを追加するのはちょっと複雑なので、グループ化にこれを使用して、緯度と経度をオンザフライで連結したいと考えています。 ファセット... 「用語」:{「フィールド」:「decimalLatitude」、「decimalLongitude」、「スクリプト」:「用語「1」」、「サイズ」:500 作品、用語の参照[1]からdecimalLongitudeまでですが、私が必要とするものではありません。 実際、私はterm [0] term [1]に加わることができますが、これはインデックス上の何かと比較することはできませんので、それを得る方法を理解できません... – user1249791

+0

私の更新された答えを見てください。 – javanna

+0

正確に何が必要なのです、ありがとう! – user1249791