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,

Другие вопросы по тегам