2016-05-20 11 views
0

私はインデックスされた文書の中に文章を持っています。私は、索引のすべての文書にわたって一意の文の値を見つけるつもりです。このフィールドは「文字列」フィールドであり、分析されます。私はcardinalityの集計を試しましたが、それは私に一意の文の数を与えますが、実際の一意の値は返しません。この問題をどうやって解決するのですか?一意の文章の値を取得する - ElasticSearch

これは

{ 
    "fields":[ 
     "incident.name" 
    ], 
    "aggs":{ 
     "unique_vuls":{ 
     "cardinality":{ 
      "field":"incident.name" 
     } 
     } 
    } 
} 
+0

あなたが必要とする[用語](https://www.elastic.co /guide/ja/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html)集計を行います。 –

+0

@AndreiStefan - 用語集を試しましたが、それは私に一意の単語のリストであり、 'incident.name'フィールドを構成する文全体ではありません。 –

+1

ええ、あなたの '名前'フィールドはnot_analyzedまたはキーワードアナライザで分析する必要があるため。または、フィールドを複数のフィールドに変換して、サブフィールドの1つが分析されないようにすることができます。 –

答えて

1

更新&回答私の検索クエリです:multi-fieldと再インデックス化データとしてAndreiStefanのアドバイス@ごとに、私はフィールド再マッピングされました。その後、incident.name.rawフィールドを使用して質問し、インデックス内のすべての固有の文章を取得できました。ここで

{ 
    "name":{       #incident.name field 
     "type":"string", 
     "index":"analyzed", 
     "fields":{ 
     "raw":{ 
      "type":"string", 
      "index":"not_analyzed" 
     } 
     } 
    } 
} 

terms集約と検索クエリの抜粋です:ここで

は、マッピングの抜粋です

{ 
    "aggs":{ 
     "unique_incidents":{ 
     "terms":{ 
      "field":"incident.name.raw" 
     } 
     } 
    } 
} 
関連する問題