La recherche de jokers ne fonctionne pas à Kibana
j'ai un champ "alerte" qui contient une longue chaîne contenant des espaces, des nombres et des caractères spéciaux. J'ai mis ce champ sur "not_analyzed". En utilisant la requête de Joker je peux émettre une requête comme suit et obtenir les résultats que je veux.
POST /test-index-snort2/type-snort/_search
{
"query": {
"wildcard": {
"Alert": {
"value": "ET CNC*"
}
}
}
}
J'aimerais utiliser Kibana pour effectuer une recherche similaire. Le faire ne donne cependant aucun résultat. Ma requête dans Kibana s'affiche comme suit:
Alert:"ET CNC*"
qui à son tour crée une requête de type query_string donc:
"query": {
"filtered": {
"query": {
"bool": {
"should": [
{
"query_string": {
"query": "Alert:"ET CNC*""
}
}
]
}
},
"filter": {
"bool": {
"must": [
{
"match_all": {}
}
]
}
}
}
y a-t-il un moyen d'obtenir les mêmes résultats à Kibana via la requête query_string que je fais avec la requête wildcard?
voici le mappage du champ D'alerte et un échantillon des entrées:
"Alert": {
"type": "string",
"index": "not_analyzed"
},
"Alert": "ET CNC Palevo Tracker Reported CnC Server TCP group 9 ",
"Alert": "ET CNC Palevo Tracker Reported CnC Server TCP group 10 ",
"Alert": "ET CNC Zeus Tracker Reported CnC Server TCP group 3 ",
3 réponses
merci à polyfractal plus dans # elasticsearch, j'ai une réponse. Par défaut, query_string diminuera la valeur de Joker. Ceci peut être désactivé par le paramètre lowercase_expanded_terms=false. Cependant, il n'y a aucun moyen de mettre ça à Kibana.
polyfractal a recommandé que je crée un analyseur pour réduire ce contenu. Cela me permettra d'utiliser le query_string avec des caractères génériques avec la limitation que la valeur du champ apparaîtra en minuscules dans les résultats de facette, mais le _source conservera le formatage original. Pour moi, cela fonctionne bien et c'est la solution que je vais de l'avant.
sauf IRC:
<polyfractal> id set up the analyzer like this: tokenizer:keyword, filters: [lowercase]
<polyfractal> that'll basically give you a lowercased `not_analyzed` field. may also want to disable norms, since you prolly dont need them either
{"wildcard":{"Alert":"ET CNC*"}}
dans la barre de recherche. vous obtiendrez le format attendu en query_string.
sur une note apparentée, j'ai été capable d'obtenir des termes plus bas à kibana en travaillant avec ce changement:
diff --git a/src/app/services/querySrv.js b/src/app/services/querySrv.js
index 72e5d8b..160285c 100644
--- a/src/app/services/querySrv.js
+++ b/src/app/services/querySrv.js
@@ -102,7 +102,7 @@ function (angular, _, config, kbn) {
.size(q.size)
.facetFilter(ejs.QueryFilter(
ejs.FilteredQuery(
- ejs.QueryStringQuery(q.query || '*'),
+ ejs.QueryStringQuery(q.query || '*').lowercaseExpandedTerms(false),
filterSrv.getBoolFilter(filterSrv.ids())
)))).size(0);
@@ -206,7 +206,7 @@ function (angular, _, config, kbn) {
switch(q.type)
{
case 'lucene':
- return ejs.QueryStringQuery(q.query || '*');
+ return ejs.QueryStringQuery(q.query || '*').lowercaseExpandedTerms(false);
case 'regex':
return ejs.RegexpQuery('_all',q.query);
default:
@@ -281,4 +281,4 @@ function (angular, _, config, kbn) {
self.init();
});