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

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*" ]
}

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

Last modified: August 28, 2025