Elasticsearch не возвращает результат для запроса из одного слова - PullRequest
0 голосов
/ 29 октября 2019

У меня есть базовый индекс Elasticsearch, который состоит из множества статей справки. Пользователи могут искать их в моем приложении Python / Django.

Индекс имеет следующие сопоставления:

{
    "mappings": {
        "properties": {
            "body": {
                "type": "text"
            },
            "category": {
                "type": "nested",
                "properties": {
                    "category_id": {
                        "type": "long"
                    },
                    "category_title": {
                        "fields": {
                            "keyword": {
                                "ignore_above": 256,
                                "type": "keyword"
                            }
                        },
                        "type": "text"
                    }
                }
            },
            "title": {
                "type": "keyword"
            },
            "date_updated": {
                "type": "date"
            },
            "position": {
                "type": "integer"
            }
        }
    }
}

Я в основном хочу, чтобы пользователь мог искать запрос и получать любыерезультаты, соответствующие названию или категории статьи.

Скажем, у меня есть статья под названием "Я не могу вспомнить свой пароль" в категории "Ваша учетная запись".

Если я ищу статьюНазвание точно, я вижу результат. Если я точно ищу название категории, я также вижу результат.

Но если я ищу только «пароль», я ничего не получаю. Что мне нужно изменить в настройке / запросе, чтобы этот запрос (или аналогичные неточные запросы) также возвращал результат?

Мой запрос выглядит так:

{
    "query": {
        "bool": {
            "should": [{
                    "multi_match": {
                        "fields": ["title"],
                        "query": "password"
                    }
                },
                {
                    "nested": {
                        "path": "category",
                        "query": {
                            "multi_match": {
                                "fields": ["category.category_title"],
                                "query": "password"
                            }
                        }
                    }
                }
            ]
        }
    }
}

Я читал другие вопросы и экспериментировал с различными настройками, но пока не повезло. Я не делаю ничего особенного в индексное время с точки зрения подготовки полей, поэтому я не знаю, стоит ли на это смотреть. Я просто использую elasticsearch-dsl значения по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...