Результаты поиска

SQL

При выполнении запроса через SQL по протоколу MySQL вы получаете запрошенные столбцы в качестве результата или пустой набор результатов, если ничего не найдено.

‹›
  • SQL
SQL
📋
SELECT * FROM tbl;
‹›
Response
+------+------+--------+
| id   | age  | name   |
+------+------+--------+
|    1 |   25 | joe    |
|    2 |   25 | mary   |
|    3 |   33 | albert |
+------+------+--------+
3 rows in set (0.00 sec)

Кроме того, вы можете использовать вызов SHOW META, чтобы увидеть дополнительную мета-информацию о последнем запросе.

‹›
  • SQL
SQL
📋
SELECT id,story_author,comment_author FROM hn_small WHERE story_author='joe' LIMIT 3; SHOW META;
‹›
Response
++--------+--------------+----------------+
| id     | story_author | comment_author |
+--------+--------------+----------------+
| 152841 | joe          | SwellJoe       |
| 161323 | joe          | samb           |
| 163735 | joe          | jsjenkins168   |
+--------+--------------+----------------+
3 rows in set (0.01 sec)
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| total          | 3     |
| total_found    | 20    |
| total_relation | gte   |
| time           | 0.010 |
+----------------+-------+
4 rows in set (0.00 sec)

В некоторых случаях, например, при выполнении фасетного поиска, вы можете получить несколько наборов результатов в ответ на свой SQL-запрос.

‹›
  • SQL
SQL
📋
SELECT * FROM tbl WHERE MATCH('joe') FACET age;
‹›
Response
+------+------+
| id   | age  |
+------+------+
|    1 |   25 |
+------+------+
1 row in set (0.00 sec)
+------+----------+
| age  | count(*) |
+------+----------+
|   25 |        1 |
+------+----------+
1 row in set (0.00 sec)

В случае предупреждения, набор результатов будет включать флаг предупреждения, и вы можете увидеть предупреждение с помощью SHOW WARNINGS.

‹›
  • SQL
SQL
📋
SELECT * from tbl where match('"joe"/3'); show warnings;
‹›
Response
+------+------+------+
| id   | age  | name |
+------+------+------+
|    1 |   25 | joe  |
+------+------+------+
1 row in set, 1 warning (0.00 sec)
+---------+------+--------------------------------------------------------------------------------------------+
| Level   | Code | Message                                                                                    |
+---------+------+--------------------------------------------------------------------------------------------+
| warning | 1000 | quorum threshold too high (words=1, thresh=3); replacing quorum operator with AND operator |
+---------+------+--------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

Если ваш запрос завершится ошибкой, вы получите сообщение об ошибке:

‹›
  • SQL
SQL
📋
SELECT * from tbl where match('@surname joe');
‹›
Response
ERROR 1064 (42000): index idx: query error: no field 'surname' found in schema

HTTP

Через HTTP JSON интерфейс результат запроса отправляется в виде JSON-документа. Пример:

{
  "took":10,
  "timed_out": false,
  "hits":
  {
    "total": 2,
    "hits":
    [
      {
        "_id": 1,
        "_score": 1,
        "_source": { "gid": 11 }
      },
      {
        "_id": 2,
        "_score": 1,
        "_source": { "gid": 12 }
      }
    ]
  }
}
  • took: время выполнения поиска в миллисекундах
  • timed_out: указывает, истекло ли время выполнения запроса или нет
  • hits: результаты поиска со следующими свойствами:
    • total: общее количество соответствующих документов
    • hits: массив, содержащий совпадения

Результат запроса также может включать информацию профилирования запроса. Смотрите Профиль запроса.

Каждое совпадение в массиве hits имеет следующие свойства:

  • _id: идентификатор совпадения
  • _score: вес совпадения, рассчитанный ранкером
  • _source: массив, содержащий атрибуты этого совпадения

Выбор источника

По умолчанию все атрибуты возвращаются в массиве _source. Вы можете использовать свойство _source в теле запроса, чтобы выбрать поля, которые хотите включить в набор результатов. Пример:

{
  "table":"test",
  "_source":"attr*",
  "query": { "match_all": {} }
}

Вы можете указать атрибуты, которые хотите включить в результат запроса, в виде строки ("_source": "attr*") или в виде массива строк ("_source": [ "attr1", "attri*" ]"). Каждая запись может быть именем атрибута или шаблоном с подстановочными знаками (поддерживаются символы *, % и ?).

Вы также можете явно указать, какие атрибуты вы хотите включить, а какие исключить из набора результатов, используя свойства includes и excludes:

"_source":
{
  "includes": [ "attr1", "attri*" ],
  "excludes": [ "*desc*" ]
}

Пустой список включает интерпретируется как «включить все атрибуты», в то время как пустой список исключений ничего не исключает. Если атрибут соответствует как включениям, так и исключениям, то исключения имеют приоритет.

Last modified: August 28, 2025