ES に保存したいくつかのログに対してファセット クエリを実行しようとしています。ログは次のようになります
{"severity": "informational","message_hash_value": "00016B15", "user-agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1", "host": "192.168.8.225", "version": "1.0", "user": "User_1@test.co", "created_timestamp": "2013-03-01T15:34:00", "message": "User viewed contents", "inserted_timestamp": "2013-03-01T15:34:00"}
私が実行しようとしているクエリは
curl -XGET 'http://127.0.0.1:9200/logs-*/logs/_search'
-d {"from":0, "size":0,
"facets" : {
"user" : {
"terms" : {"field" : "user", "size" : 999999 } } } }
ログのフィールド"user"
は電子メール アドレスであることに注意してください。今問題は、terms-facet
私が使用する検索クエリが、以下に示すようにユーザーフィールドから用語のリストを返すことです。
u'facets': {u'user': {u'_type': u'terms', u'total': 2004, u'terms': [{u'count': 1002,u'term': u'test.co'}, {u'count': 320, u'term': u'user_1'}, {u'count': 295,u'term': u'user_2'}
そのリストには、term
{u'count': 1002,u'term': u'test.co'}
これは、ユーザーの電子メール アドレスのドメイン名です。なぜelasticsearchはドメインを別の用語として扱っているのですか?
クエリを実行してマッピングを確認する
curl -XGET 'http://127.0.0.1:9200/logs-*/_mapping?pretty=true'
"user"
フィールドに対して次の結果が得られます
"user" : {
"type" : "string"
},