Поиск отдельных слов или подстановочных знаков с Elasticsearch - PullRequest
0 голосов
/ 15 марта 2019

При поиске, как показано ниже, я успешно получил результатЭто также верно для предложений (или полных слов).Однако частичные слова не находят ничего.

Например, давайте посмотрим на это предложение:

embedded image can place here.

Когда я ищу embedded, он находит это содержимое.Но embed ничего не находит.

Позвольте мне показать вам:

GET _search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "content": "Embedded"
          }
        }
      ],
      "filter": [
        {
          "term": {
            "user_id": 10
          }
        }
      ]
    }
  }
}

Результат :

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 6,
    "successful" : 6,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 0.2876821,
    "hits" : [
      {
        "_index" : "inbox",
        "_type" : "mailbox",
        "_id" : "8c76f6a5-115a-4102-94e6-a3abef914d13",
        "_score" : 0.2876821,
        "_source" : {
          "user_id" : 10,
          "content" : "Embedded image"
        }
      }
    ]
  }
}

Тем не менее, позволяет искать слово только embed:

GET _search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "content": "Embed"
          }
        }
      ],
      "filter": [
        {
          "term": {
            "user_id": 10
          }
        }
      ]
    }
  }
}

Результат : Пусто ...

{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 6,
    "successful" : 6,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 0,
    "max_score" : null,
    "hits" : [ ]
  }
}

Можно ли найти похожее содержимое при таком поиске?Обратите внимание, что он также должен найти, когда я ищу embed image

GET _search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "content": "embed image"
          }
        }
      ],
      "filter": [
        {
          "term": {
            "user_id": 10
          }
        }
      ]
    }
  }
}

1 Ответ

0 голосов
/ 15 марта 2019

Я решил это с помощью query_string

GET _search
{
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "embed image",
            "fields": [
              "content"
            ]
          }
        }
      ],
      "filter": [
        {
          "term": {
            "user_id": 10
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...