jmn*_*ong 10 tokenize elasticsearch
我正在使用Facet Terms获取字段的所有唯一值及其计数.而且我得到了错误的结果.
term: web
Count: 1191979
term: misc
Count: 1191979
term: passwd
Count: 1191979
term: etc
Count: 1191979
Run Code Online (Sandbox Code Playgroud)
而实际结果应该是:
term: WEB-MISC /etc/passwd
Count: 1191979
Run Code Online (Sandbox Code Playgroud)
这是我的示例查询:
{
"facets": {
"terms1": {
"terms": {
"field": "message"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
imo*_*tov 15
如果重新索引是一个选项,那么最好更改映射并将此字段标记为not_analyzed
"your_field" : { "type": "string", "index" : "not_analyzed" }
Run Code Online (Sandbox Code Playgroud)
如果需要保留分析的字段版本,则可以使用多字段类型:
"your_field" : {
"type" : "multi_field",
"fields" : {
"your_field" : {"type" : "string", "index" : "analyzed"},
"untouched" : {"type" : "string", "index" : "not_analyzed"}
}
}
Run Code Online (Sandbox Code Playgroud)
这样,您可以继续使用your_field查询,同时使用facet搜索your_field.untouched.
或者,如果存储了此字段,则可以使用脚本字段facet:
"facets" : {
"term" : {
"terms" : {
"script_field" : "_fields.your_field.value"
}
}
}
Run Code Online (Sandbox Code Playgroud)
作为最后的手段,如果没有存储此字段,但记录源存储在索引中,您可以尝试这样做:
"facets" : {
"term" : {
"terms" : {
"script_field" : "_source.your_field"
}
}
}
Run Code Online (Sandbox Code Playgroud)
第一种解决方案是最有效的.最后一个解决方案效率最低,可能会在大型索引上花费大量时间.
| 归档时间: |
|
| 查看次数: |
4302 次 |
| 最近记录: |