【发布时间】:2013-04-04 13:26:26
【问题描述】:
我正在尝试对存储在 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"
},
【问题讨论】:
标签: elasticsearch faceted-search facets