Отправляю заявку:

POST http://localhost:9200/mydatabase/users/_search

С телом:

{
    "query": {
        "fuzzy" : {
            "role" : {
                "value": "admn",
                "boost": 1.0,
                "fuzziness": 1,
                "prefix_length": 0,
                "max_expansions": 100
            }
        }
    }
}

И я получаю такой ответ:

 "hits": [
            {
                "_index": "mydatabase",
                "_type": "users",
                "_id": "mKstz2IBuOClWUbC0-1v",
                "_score": 0.5198604,
                "_source": {
                    "user": "Сорокин Роман",
                    "description": "Данному пользователю предоствлена админка",
                    "role": "Admin"
                }
            }
        ]

Как написать запрос, если я хочу получить поиск по всем полям, а не только по полю «роль» и использовать нечеткое?

Можно ли написать запрос без настройки маппинга?

2
Sorokin Roman 16 Апр 2018 в 20:16

1 ответ

Лучший ответ

Поскольку вы упомянули «без настройки сопоставления» - я предполагаю, что вы уже рассмотрели _ все поле (которое требует изменения сопоставления).

Варианты:

1 - Используйте "строку запроса" "запрос без поля default_field и использовать синтаксис запроса Lucene для нечеткого соответствия; Как упоминалось в документации - по умолчанию он объединяет все поля для генерации запроса.

GET /_search
{
    "query": {
        "query_string" : {
           query" : "admn~"
        }
    }
}

Вы также можете настроить таргетинг на определенные поля (включая подстановочные знаки).

 GET /_search
    {
        "query": {
            "query_string" : {
               "fields": "role*" 
               "query" : "admn~"
            }
        }
    }

2- Чтобы использовать запрос типа bool и предложение следует объединить несколько полей.

POST _search
{
  "query": {
    "bool": {
      "should": [
        {
          "fuzzy": {
            "role": {
              "value": "admn",
              "boost": 1,
              "fuzziness": 1,
              "prefix_length": 0,
              "max_expansions": 100
            }
          }
        },
        {
          "fuzzy": {
            "role2": {
              "value": "admn",
              "boost": 1,
              "fuzziness": 1,
              "prefix_length": 0,
              "max_expansions": 100
            }
          }
        }
      ]
    }
  }
}
0
Nirmal 16 Апр 2018 в 20:04