0

超える集約私のようにマッピングしてインデックスを持っている -弾性検索(2.4) - 検索と配列

GET /sampledesc/desc/_mapping 
{ 
    "sampledesc": { 
    "mappings": { 
    "desc": { 
     "properties": { 
      "labels": { 
       "type": "string", 
       "index": "not_analyzed" 
      }, 
      "tags": { 
       "type": "string", 
       "index": "not_analyzed" 
      }, 
      "user_id": { 
       "type": "long" 
      } 
     } 
    } 
    } 
} 
} 

私はそれにいくつかのデータを追加 -

PUT /sampledesc/desc/1 
{ 
"user_id": 1, 
"tags": ["tag1", "tag2", "tag3"], 
"labels": ["label1","label2"] 
} 

PUT /sampledesc/desc/2 
{ 
"user_id": 2, 
"tags": ["tag2","tag3",], 
"labels": ["label2","label4"] 
} 

PUT /sampledesc/desc/3 
{ 
"user_id": 3, 
"tags": ["tag7"], 
"labels": ["label1","label4"] 
} 

私はこのデータを照会しますこれらのルール:

  1. タグのリストを指定したすべてのユーザーを検索します。
  2. これらのユーザーの場合は、ラベルを数でグループ化します。

たとえば、tag2とtag3の両方を持つユーザーにクエリを行い、ラベルを並べ替え順序でグループ化します。 3人のユーザーのサンプルデータでは、私の結果はlabel2 = 2; label1 = 1, label4 = 1になります。

答えて

1

こんにちはあなたは、これが おかげ

を助け、次のクエリ

{ 
    "aggs": { 
     "label_group": { 
      "terms": { 
       "field": "labels", 
       "size": 10 
      } 
     } 
    }, 
    "query": { 
     "bool": { 
      "must": [{ 
       "terms": { 
        "tags": [ 
         "tag2" 
        ] 
       } 
      }, { 
       "terms": { 
        "tags": [ 
         "tag3" 
        ] 
       } 
      }] 
     } 
    } 
} 

希望を使用することができます