Несколько дней назад я написал статью «Самая подробная установка и настройка Elasticsearch 7.x», а сегодня продолжаю последнюю версию основного содержания записи. В этой статье представлен краткий обзор документации Elasticsearch 7.x, индексации и REST API.
- что такое документ
- Уникальный идентификатор документа
- метаданные документа
- Что такое индекс?
- REST API
1. Индексный документ (Документ)
1.1 Что такое документ на местном языке
С точки зрения варианта использования Elasticsearch ориентирован на документы, а документ — это наименьшая единица всех поисковых данных.
- Случай 1. У каждой компании есть платформа для бизнес-журналов, например бизнес-журнал транзакций.
Документ: запись журнала в каждом файле журнала является документом. - Случай 2: сайты онлайн-видео, которые могут искать и воспроизводить фильмы
Документация: конкретная информация каждого фильма является документация - Случай 3: Вы можете искать и загружать файлы с веб-сайта облачного хранилища, похожего на Baidu Cloud.
Документ: Конкретная информация о содержимом каждого файла является документом.
Есть много случаев и т. д., тогда документ представляет собой запись длительного хранения, аналогичную базе данных. Документ (Document) является основной единицей индексной информации.
Документы сериализуются в формате JSON и физически хранятся в индексе. JSON — это распространенный формат обмена данными в Интернете:
- Имя поля документа: формат JSON состоит из пар имя/значение, а соответствующее имя является именем поля документа.
- Тип поля документа: Каждое поле имеет соответствующий тип поля: строка, целое число, длинное и т. д., и поддерживает данные и вложенность.
1.2 Уникальный идентификатор документа
Каждый документ будет иметь уникальный идентификатор, имя поля которого_id
:
- Задайте указанный ID самостоятельно или автоматически сгенерируйте его через Elasticsearch
- Его значение не будет проиндексировано
- Обратите вниманиеЗначение поля id можно использовать в определенных запросах term, terms, match, querystring, simplequeryстрока и т. д., но не в агрегатах, сценариях или сортировке. если необходимополе id для сортировки или суммирования, рекомендуется создать новое поле документа для копированиясодержимое поля id
PUT my_index/_doc/1
{
"text": "Document with ID 1"
}
PUT my_index/_doc/2&refresh=true
{
"text": "Document with ID 2"
}
GET my_index/_search
{
"query": {
"terms": {
"_id": [ "1", "2" ]
}
}
}
1.3 Метаданные документа
Метаданные — это связанная информация, используемая для маркировки документов, поэтому метаданные проиндексированных документов выглядят следующим образом:
- _index Имя индекса, к которому принадлежит документ
- _type Имя типа, к которому принадлежит документ
- _id Уникальный идентификатор документа
- _score Оценка релевантности документа
- _source данные JSON документа
- _version Информация о версии документа
Среди них документ _type относится к имени типа, нужно обратить внимание на разницу между разными версиями:
- До версии 7.0 индекс мог иметь несколько типов.
- Начиная с 7.0, он устарел. Индекс может создавать только один тип, значение _doc
2. Указатель (Индекс)
2.1 Индексы имеют разное значение
В качестве существительного индекс означает, что в кластере Elasticsearch может быть создано множество различных индексов. Вот что резюмирует этот раздел.
Как глагол, индексирование означает сохранение документа в Elasticsearch. Это означает создание инвертированного индекса в Elasticsearch
2.2 Что такое индекс
Индекс представляет собой набор похожих типов документов. Подобно контейнеру Spring Bean, загруженному множеством bean-компонентов, индекс ES является контейнером документа, который представляет собой набор документов определенного типа.
ранее импортированная кибанаsampleИндекс data_flights, получая следующую URL, вы можете получить некоторую информацию о индексе:
GET http://localhost:9200/kibana_sample_data_flights
Результат выглядит следующим образом:
{
"kibana_sample_data_flights": {
"aliases": {},
"mappings": {
"properties": {
"AvgTicketPrice": {
"type": "float"
},
"Cancelled": {
"type": "boolean"
},
"Carrier": {
"type": "keyword"
},
"DestLocation": {
"type": "geo_point"
},
"FlightDelay": {
"type": "boolean"
},
"FlightDelayMin": {
"type": "integer"
},
"timestamp": {
"type": "date"
}
}
},
"settings": {
"index": {
"number_of_shards": "1",
"auto_expand_replicas": "0-1",
"blocks": {
"read_only_allow_delete": "true"
},
"provided_name": "kibana_sample_data_flights",
"creation_date": "1566271868125",
"number_of_replicas": "0",
"uuid": "SfR20UNiSLKJWIpR1bcrzQ",
"version": {
"created": "7020199"
}
}
}
}
}
По возвращенному результату мы знаем:
- сопоставления: определить типы полей документа
- настройки: определить различные распределения данных
- псевдонимы: определите псевдонимы для индекса, к которым можно получить доступ через псевдоним
Индекс представляет собой концепцию логического пространства.Каждый индекс имеет определение сопоставления для этого, соответствующее имени поля и типу поля документа. По сравнению с шардингом, о котором речь пойдет позже, это концепция физического пространства, и данные, хранящиеся в индексе, будут разбросаны по шардам.
Сводка фактического опыта: псевдоним AliaseS, такой как Myиндекс перенесен на мойindex_new , после переноса данных вам нужно только сохранить согласованную конфигурацию псевдонима. Тогда бизнес-стороне, получающей доступ к индексу через псевдоним, не нужно его изменять, и его можно перенести напрямую.
2.3 Аналогия с MySQL
Базовое понимание двух важных концепций Elasticsearch, вы можете сравнить ключевые моменты ES с реляционными базами данных следующим образом:
3. REST API удобен для вызова ES на разных языках
Как показано на рисунке, для удобства Elasticsearch предоставляет REST API.
# 查看索引相关信息
GET kibana_sample_data_ecommerce
# 查看索引的文档总数
GET kibana_sample_data_ecommerce/_count
# 查看前10条文档,了解文档格式
POST kibana_sample_data_ecommerce/_search
{
}
# _cat indices API
# 查看indices
GET /_cat/indices/kibana*?v&s=index
# 查看状态为绿的索引
GET /_cat/indices?v&health=green
# 按照文档个数排序
GET /_cat/indices?v&s=docs.count:desc
# 查看具体的字段
GET /_cat/indices/kibana*?pri&v&h=health,index,pri,rep,docs.count,mt
# How much memory is used per index?
GET /_cat/indices?v&h=i,tm&s=tm:desc
Доступ к конкретному API можно получить с помощью таких инструментов, как POSTMan, или путем установки kibana и соответствующих инструментов разработки.
(Конец), больше можно увидеть в серии руководств по ES 7.x на сайте Socket.com.
материал:
- Самая подробная установка и настройка Elasticsearch 7.x
https://www.bysocket.com/elasticsearch/2417.html - Geek Time Основные технологии и практика Elasticsearch
- CAT Index API https://www.elastic.co/guide/en/elasticsearch/reference/7.1/cat-indices.html
- Почему несколько Tyeps под одним индексом больше не поддерживаются https://www.elastic.co/cn/blog/moving-from-types-to-typeless-apis-in-elasticsearch-7-0
Эта статья опубликована в блогеOpenWriteвыпуск!