ELK,萌萌哒

包含全部关键词时才人为命中查询语句.

Elasticsearch | 作者 Hacksign | 发布于2015年12月16日 | 阅读数:5680

需求是这样的,提供一个关键词列表,当查询的字符串包含所有关键词列表中的关键词时,才人为此条记录为满足需求的记录.我写了下面的查询代码:
{
"size" : 10,
"query" : {
"bool" : {
"must" : [
{
"match" : {
"log._kv_" : {
"query" : "officecheck macros vba_code cmd.exe",
"operator" : "and"
}
}
}
]
}
},
"highlight" : {
"fields" : {
"log._kv_" : {}
}
}
}
为了方便查看命中了哪些关键词,特定用highlight高亮命中的关键词,发现了如下记录被查询了出来:
      "highlight" : {
"log._kv_" : ["additional_info <em>officecheck</em> ole <em>macros</em> <em>vba</em>_<em>code</em> Public Sub Main()\nConst ProcName As String = \"\"\nOn", "additional_info <em>officecheck</em> ole <em>macros</em> subfilename r:\\sav6\\work_channel0_9\`1793486", "additional_info <em>officecheck</em> ole <em>macros</em> <em>vba</em>_filename Module1.bas", "additional_info <em>officecheck</em> ole <em>macros</em> stream_path _VBA_PROJECT_CUR/VBA/Module1" ]
}
根据上面的命中记录,并没有发现包含cmd这个关键词,因此此条不是我需求的记录.
所以想问一下各位,查询语句应该如何写?
只有所有的关键词(可以是经过分词后的关键词)都出现时才人为是符合条件的记录.

 
已邀请:

要回复问题请先登录注册