我使用匹配查询来搜索字段“syslog_5424”
{
"query":{
"filtered":{
"query":{"match":{"syslog5424_app":"e1c28ca3-dc7e-4425-ba14-7778f126bdd6"}}
}
}
}
以下是查询结果:
{
took: 23,
timed_out: false,
-_shards: {
total: 45,
successful: 29,
failed: 0
},
-hits: {
total: 8340,
max_score: 17.623652,
-hits: [
-{
_index: "logstash-2014.12.16",
_type: "applog",
_id: "AUpTBuwKsotKslj7c27d",
_score: 17.623652,
-_source: {
message: "132 <14>1 2014-12-16T12:16:09.889089+00:00 loggregator e1c28ca3-dc7e-4425-ba14-7778f126bdd6 [App/0] - - Get the platform's MBean server",
@version: "1",
@timestamp: "2014-12-16T12:16:10.127Z",
host: "9.91.32.178:33128",
type: "applog",
syslog5424_pri: "14",
syslog5424_ver: "1",
syslog5424_ts: "2014-12-16T12:16:09.889089+00:00",
syslog5424_host: "loggregator",
syslog5424_app: "e1c28ca3-dc7e-4425-ba14-7778f126bdd6",
syslog5424_proc: "[App/0]",
syslog5424_msg: "Get the platform's MBean server",
syslog_severity_code: 5,
syslog_facility_code: 1,
syslog_facility: "user-level",
syslog_severity: "notice",
@source_host: "%{syslog_hostname}",
@message: "%{syslog_message}"
}
},
...
但是当我将“匹配”改为“术语”时,我什么都没得到。字段syslog5424_app的内容正好是“e1c28ca3-dc7e-4425-ba14-7778f126bdd6”,但我找不到它使用“term”。任何一种建议都会很好。
{
"query":{
"filtered":{
"query":{"term":{"syslog5424_app":"e1c28ca3-dc7e-4425-ba14-7778f126bdd6"}}
}
}
}
答案 0 :(得分:4)
您在字段 syslog_5424 上使用了什么样的分析器?
如果它是standard analyser
,则数据可能会被分解为搜索字词。
例如
e1c28ca3-dc7e-4425-ba14-7778f126bdd6
分解为:
e1c28ca3
dc7e
4425
ba14
7778f126bdd6
当您使用匹配查询时,您的搜索字符串也会被细分 - 因此匹配即可。
但是,当您使用字词查询时,将不会分析搜索字符串。即你在5个人的条款中寻找e1c28ca3-dc7e-4425-ba14-7778f126bdd6
- 它不匹配。
所以 - 我的建议是更新您的映射以使用not_analyzed
- 您通常不需要部分UUID,因此请关闭此字段的所有分析。