Используйте Elasticsearch percolate с указанным c типом имени поля - PullRequest
1 голос
/ 10 января 2020

Я делаю систему подписки на уведомления, используя тип собственности Elasticsearch 7.x. Проблема в том, что я не могу сделать запрос на фильтрацию с определенными типами полей.

Это пример индексированных данных. Как вы можете видеть, у меня есть индексированный запрос, чтобы можно было выполнить отдельный запрос. Разница, которую я хотел бы упомянуть, - это имя поля в запросе, которое может быть state или created_by.full_name.raw

{
    "_index": "widgets_2020",
    "_type": "widget",
    "_score": 1.0,
    "_source": {
        "created_at": "2020-01-09T21:58:14.123Z",
        "query": {
            "bool": {
                "must": [],
                "filter": [
                    {
                        "terms": {
                            "created_by.full_name.raw": [
                                "Ivan Ledner"
                            ]
                        }
                    }
                ]
            }
        }
    }
},
{
    "_index": "widgets_2020",
    "_type": "widget",
    "_score": 1.0,
    "_source": {
        "created_at": "2020-01-09T22:02:24.133Z",
        "query": {
            "bool": {
                "must": [],
                "filter": [
                    {
                        "terms": {
                            "state": [
                                "done"
                            ]
                        }
                    }
                ]
            }
        }
    }
}

Когда я делаю что-то подобное, Elasticsearch возвращает ожидаемые документы.

widgets_2020/_search

{
    "query" : {
        "percolate" : {
            "field" : "query",
            "document" : {
                "state": ["created"]
            }
        }
    }
}

Но когда я ищу это, ничего не возвращается.

widgets_2020/_search

{
    "query" : {
        "percolate" : {
            "field" : "query",
            "document" : {
                "created_by.full_name.raw": ["Ivan Ledner"]
            }
        }
    }
}

Есть ли другой способ работы с этими типами имен? Заранее спасибо!

1 Ответ

0 голосов
/ 13 января 2020

Проблема заключалась в том, что я включил опцию map_unmapped_fields_as_text, и все мои поля отображались как текст, как говорят опции. Я решил это путем сопоставления всех атрибутов вручную, и перколятор начал работать, как и ожидалось.

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