Подстановочный запрос Elasticsearch - PullRequest
0 голосов
/ 07 февраля 2019

Можете ли вы помочь мне понять, почему простой запрос не работает.У меня есть простой индекс с настройками по умолчанию:

PUT my_index/doc/1
{
  "path": "C:\\Windows\\system32\\cmd.exe"
}

Почему следующий запрос ничего не возвращает?

GET my_index/_search
{
  "_source": "path", 
  "query": {
    "query_string": {
      "query": "(path: *\\system32\\*.exe)"
    }
  }
}

1 Ответ

0 голосов
/ 07 февраля 2019

Вы должны указать поле в вашем запросе следующим образом.

GET sample-index/_search
{
    "query": {
        "query_string" : {
            "fields" : ["path.keyword"],
            "query" : """*\\system32\\*.exe"""
        }
    }
}

Вывод, который я получил, был:

    {   "took": 13,
        "timed_out": false,
        "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0   },   
        "hits": {
        "total": 1,
        "max_score": 1,
        "hits": [
          {
            "_index": "sample-index",
            "_type": "doc",
            "_id": "1",
            "_score": 1,
            "_source": {
              "path": """C:\Windows\system32\cmd.exe"""
            }
          }
        ]
   }
 }

Здесь я использовал path.keyword например, когда вы публикуете новое поле (как вы делали в своем вопросе) без сопоставления, оно по умолчанию создает для него поле ключевого слова. проверьте здесь больше

Дополнительный совет: Вы также можете применить регулярное выражение к разделу поля, если хотите проверить наличие нескольких полей (например: путь, путь1, путь и т. Д.)

GET sample-index/_search
{
    "query": {
        "query_string" : {
            "fields" : ["path*"],
            "query" : """*\\system32\\*.exe"""
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...