Оригинальный автор, публичный аккаунт [программист чтение], прошу обратить внимание на паблик аккаунт, просьба указывать источник перепечатываемой статьи.
В предыдущей статье былElastic Stack
состав, иметь общее представление о функциях каждого компонента и знать, как установить каждый компонент, и наиболее важным компонентом являетсяelasticsearch(es)
, поэтому в этой статье мы поговорим оes
некоторые из основных понятий.
es
Основными понятиями в основном являются:index
(показатель),Document
(документация),Clusters
(кластер),Node
(узел) и примеры, давайте сначала посмотрим на этоDocument
иIndex
.
RESTful APIs
объяснениеDocument
иIndex
Перед концепцией давайте сначала разберемсяRESTful APIs
, потому что следующее объясняетDocument
иIndex
будет использоваться, когда .
Когда мы запускаем сервер es, как мы его называем?
На самом деле это очень просто, es предоставляет на основеHTTP
протоколRESTful APIS
, то есть мы можем отправить его на сервер es, отправивHTTP
Запросы на работу сервера es, такие как чтение и запись документов, запросы к API документов, поиск API, создание и удаление индексов.По умолчанию es использует порт 9200 для получения HTTP-запросов.
Так что вызывать es легко, мы даже можем использовать инструменты командной строкиcurl
звонитьes
, например, в следующем коде мы используемcurl
В направленииes
ОтправитьPUT
Запрос, передача данных в формате JSON в теле запроса на сервер es:
# 使用curl调用es,创建一个文档
curl http://localhost:9200/my_test/1 -H "Content-Type:application/json" \
-X POST -d '{"uid":1,"username":"test"}'
На следующем рисунке показан процесс отправки запроса к es и ответа серверу es:
Однако в целом мы можем управлять es через Kibana, а es в KibanaDev Tools
позволяет использовать различныеes
изRESTful API
, ниже то, что мы имеем вKibana
серединаDev Tools
Используемая структура оператора фактически такая же, как и использованная выше.curl
Опять же, мы будем использовать этот формат в демонстрации ниже.
PUT /my_test/_doc/1
{
"uid":1,
"username":"test"
}
На самом деле, чтобы облегчить вызов различных языков программирования,es
Предоставляет библиотеки классов для нескольких языков программирования (Java
,PHP
,Ruby
,Go
,Python
,JavaScript
,NET
д.), но эти языки программирования основаны наes
который предоставилRESTful APIs
упаковка.
Документ
es
ориентирован на документ, документes
Наименьшая доступная для поиска единица в ,es
Документ состоит из одного или нескольких полей, подобных строке в реляционной базе данных, ноes
ДокументацияJSON
сериализованы и сохранены, каждыйJSON
Объект состоит из одного или нескольких полей, и тип поля может быть логическим, числовым, строковым, двоичным, датой и другими типами данных.
es
Каждый документ имеет уникальныйid
,этоid
можем указать сами илиes
Генерируется автоматически.
метаданные документа
es
Каждый документ, помимо сохранения исходных данных документа, который мы пишем, также имеет свои собственные метаданные, которые используются для идентификации соответствующей информации документа.
Ниже обычныйes
Документация:
{
"_index" : "test_logs2",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 1,
"found" : true,
"_source" : {
"uid" : 1,
"username" : "test"
}
}
Из приведенного выше документа мы видим, что поля метаданных документа следующие:
- _index: имя индекса, в котором находится документ
- _source: необработанные данные json
- _type: тип документа, только _doc после es7.0
- _Version: версия документа, если документ изменен, это поле будет увеличиваться
- _score: оценка релевантности
- id: уникальный идентификатор документа
Давайте разберемсяes
пройти черезRESTful Api
с документациейCURD
и так далее:
Create
по эсRESTful API
,использоватьHTTP
изPUT
метод, вы можете создать документ в индексе, вKibana
изDev Tools
, мы можем создать документ, используя следующую инструкцию:
# 在my_test索引中创建一个文档
PUT /my_test/_create/1
{
"uid":1,
"username":"one"
}
Index
В es индексы имеют следующие три значения и функции:
- Глаголы, способ создания документов в es, это то, о чем мы сейчас говорим.
- Существительные, как es организует документы, будут рассмотрены ниже.
- Глаголы, сегментируют поля документа и сохраняют их, что будет рассмотрено позже
# 使用Index的方式
PUT /my_test/_doc/1
{
"uid":1,
"username":"test"
}
Метод Index аналогичен методу Create, который используется для создания документа es. Разница в том, что при использовании Index для создания документа, если указанный идентификатор документа уже существует, исходный документ будет удален, а будет создан новый документ, а поля документа будут удалены.
_version
добавит 1
Update
Данные документа обновляются с использованием метода HTTP POST, и измененная информация поля также должна быть вdoc
, следующее:
Способ использования обновления заключается в непосредственном обновлении данных, что отличается от использования индекса для создания документа.Если документ существует, он будет удален и создан заново.
# 更新
POST /my_test/_doc/1
{
"doc":{
"username":"this is a document"
}
}
Delete
Используя метод DELETE в HTTP, вы можете удалить документ es. Пример выглядит следующим образом:
# 删除文档
DELETE /my_test/_doc/1
Read
Чтение документа es очень просто, просто используйте метод GET HTTP, как показано ниже:
# 读取
GET /my_test/_doc/1
Bulk Api
Выше было сказано о документеIndex
,Create
,Update
,Delete
и т. д., но одновременно может работать только один документ одного индекса, и мы знаем, что каждый раз, когда сервер запрашивается для выполнения операции, накладные расходы на время прохождения сетевого запроса туда и обратно составляют большое потребление, если только один операция выполняется для каждого запроса, то это слишком расточительно.
такes
документацииbulk api
Поддерживает одновременную обработку документов в разных индексах в одном запросеIndex
,Create
,Update
,Delete
Ожидание операций, также известное как пакетная обработка, во время обработки, даже если одна из операций завершается сбоем, это не повлияет на другие операции, а именно:
POST _bulk
{"create":{"_index":"my_test2","_id":4}}
{"uid":2,"username":"333333333333333333"}
{"index":{"_index":"my_test2","_id":10}}
{"uid":10,"username":"tttt"}
{"delete":{"_index":"my_test2","_id":1}}
{"update":{"_index":"my_test2","_id":2}}
{"doc":{"uid":2,"username":"hhhhhhhhhhhhhhhhh"}}
выше простоbulk api
Простой пример, если вы хотите ознакомиться с синтаксисом, вам следует взглянутьes
официальная документация.
Индекс (Индекс)
es
указатель, даes
Способ организации документов состоит в том, чтобы иметь набор структурированных документов, которые вы можете поместитьes
Индекс аналогичен таблице данных в реляционной базе данных.
Давайте посмотрим на различные операции с индексом.RESTful APIs
,следующее:
Create
использоватьHTTP
изPUT
метод создания индекса вKibna
изDev Tools
, индекс можно создать с помощью следующего оператора:
PUT /my_test
Также укажите сопоставление и настройку при создании индекса следующим образом:
PUT /my_test
{
"settings" : {
"index" : {
"number_of_shards" : 3,
"number_of_replicas" : 2
}
}
}
Exists
можно использоватьHTTP
изHEAD
Метод определяет, существует ли индекс, следующим образом:
# 判断索引是否存在
HEAD /my_test
Если индекс существует, тоhttp
возврат кода состояния200
, если он не существует, вернуть404
.
Get
использоватьHTTP
изGET
метод получения индексаsetting
иmapping
и другую информацию, а именно:
GET /index
Возвращает следующие результаты:
{
"my_test" : {
"aliases" : { },
"mappings" : { },
"settings" : {
"index" : {
"creation_date" : "1564757617415",
"number_of_shards" : "1",
"number_of_replicas" : "1",
"uuid" : "z6zGhu_ERA-R1c0m2fQrvg",
"version" : {
"created" : "7020099"
},
"provided_name" : "my_test"
}
}
}
}
Delete
API индекса, удаленный в es, позволяет нам удалять существующие индексы в следующих ситуациях:
Удаление одного или нескольких индексов с использованием имен индексов
# 删除my_test
DELETE /my_test
# 删除多个索引,用逗号分隔
DELETE /my_test,my_test1,my_test2
Используйте подстановочный знак * для удаления нескольких индексов (используйте с осторожностью)
# 删除以my_test为前缀的索引
DELETE /my_test*
Используйте _all для удаления всех индексов на сервере es.
# 删除全部索引
DELETE /_all
Обратите внимание, что эта операция очень опасна и не рекомендуется, если вы хотите отключить эту операцию, вы можетеes
изconfig/elasticsearch.yml
Лейтенант Общие параметрыaction.destructive_requires_name
Установить какtrue
,как:
action.destructive_requires_name:true
В этом случае вышеуказанные операции не могут быть выполнены.
резюме
Документация и индексацияes
Наиболее основные и основные понятия в , знакомство с операцией освоения документов и указателей подлежит дальнейшему изучению.es
На самом деле, если вы знакомы с реляционными базами данных, вы можете сравнить индекс с таблицей данных в базе данных, а документ можно понимать как строку записей в таблице данных.
Ваше внимание — самое большое поощрение на моем писательском пути!