Точно позиция по поиску строк - PullRequest
0 голосов
/ 01 апреля 2020

Мне нужно получить именно то, что я ищу. Допустим, у нас есть 3 документа с одним полем (user.created_at) и содержимым, подобным этому:

Wed Mar 04 09:14:25 +0000 2020
Wed Mar 25 12:14:25 +0000 2020
Wed Mar 25 06:14:25 +0000 2020

Тогда мой запрос в RAW будет

 {
    "query": {
        "bool": {
            "must": [
                {
                    "wildcard": {
                        "user.created_at.keyword": "*2020"
                    }
                },
                {
                    "match": {
                        "user.created_at": "Wed Mar 25"
                    }
                },
                {
                    "match": {
                        "user.created_at": "Wed Mar"
                    }
                },
                {
                    "match": {
                        "user.created_at": "Mar 25"
                    }
                },
                {
                    "match": {
                        "user.created_at": "Wed"
                    }
                },
                {
                    "match": {
                        "user.created_at": "Mar"
                    }
                },
                {
                    "match": {
                        "user.created_at": "25"
                    }
                }
            ]
        }
    }
}

Я хотел найти только для ср 25 марта , может случиться так, что я получаю результат, продолжая показывать хит, содержащий ср 04 мар 09:14:25 +0000 2020 :

Wed Mar 25 12:14:25 +0000 2020
Wed Mar 25 06:14:25 +0000 2020
Wed Mar 04 09:14:25 +0000 2020

В любом случае, тип поля - String , я не имею ни малейшего представления обновить тип отображения на сегодняшний день. Ошибка типа

{
 error: {
  root_cause: [
   {
    type: "resource_already_exists_exception",
    reason: "index [final/KyzdFVn4RnCicyphDFBW-w] already exists",
    index_uuid: "KyzdFVn4RnCicyphDFBW-w",
    index: "final"
   }
  ],
  type: "resource_already_exists_exception",
  reason: "index [final/KyzdFVn4RnCicyphDFBW-w] already exists",
  index_uuid: "KyzdFVn4RnCicyphDFBW-w",
  index: "final"
 },
 status: 400
}

Я совершенно не в себе. Пожалуйста, помогите мне!

1 Ответ

0 голосов
/ 01 апреля 2020

вы можете использовать запрос match_phrase со спадом 0. Этот конкретный запрос c обеспечит поиск всех терминов в порядке.

{
  "query": {
    "bool": {
      "must": [
        {
          "wildcard": {
            "user.created_at.keyword": "*2020"
          }
        },
        {
          "match_phrase": {
            "user.created_at": {
              "slop": 0,
              "query": "Wed Mar 25"
            }
          }
        }
      ]
    }
  }
}

Он не будет обрабатывать все случаи, но при поиске «ср 25 марта» вы получите только

Wed Mar 25 12:14:25 +0000 2020
Wed Mar 25 06:14:25 +0000 2020
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...