Как правильно использовать подстановочный знак при поиске эластичного поиска? - PullRequest
0 голосов
/ 02 мая 2019

Я только что запрыгнул в ES, и у меня нет большого опыта в этом, так что, возможно, я чего-то упускаю в этом.

Я нашел эту документацию: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-wildcard-query.html, которая в основном объясняет, как выполнять поиск по шаблону.

Я пытаюсь найти все сообщения в моем документе, которые имеют определенный шаблон.

Итак, используя Kibana Sense (эластичный пользовательский интерфейс поискового запроса), я сделал это:

GET _search
{
    "query": {
        "wildcard" : {
            "model.message": "my*"
        }
    }
}

этим я пытаюсь получить все сообщения, которые начинаются с "my"

Но я не получаю результатов ...

Вот копия моей структуры документа (или хотя бы первых строк ...)

 "_index": "my_index",
    "_type": "my_type",
    "_id": "123456",
    "_source": {
      "model": {
        "id": "123456",
        "message": "my message",

Есть идеи, что может быть не так?

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Ваш образец документа на самом деле содержит поле model.content.message, но не поле model.message, поэтому должен работать следующий запрос:

GET _search
{
    "query": {
        "wildcard" : {
            "model.content.message": "my*"
        }
    }
}
0 голосов
/ 02 мая 2019

Можете ли вы поделиться своим отображением?Похоже, вам нужно использовать вложенный запрос:

GET /_search
{
    "query": {
        "nested" : {
            "path" : "model",
            "score_mode" : "avg",
            "query" : {
                "wildcard" : {
                    "model.message": "my*"
                }
            }
        }
    }
}

Подробнее о вложенных запросах можно прочитать здесь .

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