Kibana: невозможно выполнить запрос с регулярным выражением, имеющим пробел
У меня есть поле как
author
Jason Pete
Jason Paul
Mike Yard
Jason Voorhies
в кибане 4.4 я запрашиваю как
author:/Jason.*/
так что я получаю все записи за
Jason Pete
Jason Paul
Jason Voorhies
хорошо, теперь я хочу сделать
author:/Jason P.*/
Я жду
Jason Pete
Jason Paul
но я получаю
No Records found :(
что не так с моим регулярным выражением? Есть ли другой способ указать символ пробела после Джейсона? Я даже пытался
author:/Jason\sP.*/
но до сих пор нет результатов
2 ответа
Это потому что ваш author
поле, вероятно, анализируется, и, следовательно, значение Jason Pete
получает токены в два токена jason
а также pete
, Следовательно, невозможно запросить оба значения.
Если вы хотите изменить это поведение, я предлагаю вам создать мультиполе из author
поле, с not_analyzed
подполе, как это:
curl -XPUT localhost:9200/my_index/_mapping/my_type -d '{
"my_type": {
"properties": {
"author": {
"type": "string",
"fields": { <--- add this section to author your field
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}'
Как только ваше отображение обновится (не забудьте заменить my_index
а также my_type
независимо от того, какой у вас есть индекс и имя типа сопоставления), вам необходимо переиндексировать данные, и тогда вы сможете запросить author.raw
поле в кибане вот так:
author.raw:/Jason P.*/
Это работает для меня с:
author:/Jason\ P.*/
Так что обратная косая черта \s
работает для космоса в моем случае, ES1.7
а также Kibana4.1.2
,