クイックスタート: Elasticsearch APIを使用してデータを追加する
このクイックスタートガイドでは、次のタスクを実行する方法を学びます:
- Elasticsearch REST APIを使用して、タイムスタンプのない小さなデータセットをElasticsearchに追加します。
- 基本的な検索を実行します。
データを追加する
データは、ドキュメントと呼ばれるJSONオブジェクトとしてElasticsearchに追加されます。Elasticsearchは、これらのドキュメントを検索可能なインデックスに保存します。
単一のドキュメントを追加する
次のインデックスリクエストを送信して、books
インデックスに単一のドキュメントを追加します。このリクエストは自動的にインデックスを作成します。
Python
resp = client.index(
index="books",
document={
"name": "Snow Crash",
"author": "Neal Stephenson",
"release_date": "1992-06-01",
"page_count": 470
},
)
print(resp)
Ruby
response = client.index(
index: 'books',
body: {
name: 'Snow Crash',
author: 'Neal Stephenson',
release_date: '1992-06-01',
page_count: 470
}
)
puts response
Js
const response = await client.index({
index: "books",
document: {
name: "Snow Crash",
author: "Neal Stephenson",
release_date: "1992-06-01",
page_count: 470,
},
});
console.log(response);
コンソール
POST books/_doc
{"name": "Snow Crash", "author": "Neal Stephenson", "release_date": "1992-06-01", "page_count": 470}
レスポンスには、インデックス内のドキュメントに対してElasticsearchが生成するメタデータが含まれ、ドキュメントのユニークな_id
が含まれます。
例のレスポンスを表示するには展開してください
コンソール-結果
{
"_index": "books",
"_id": "O0lG2IsBaSa7VYx_rEia",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}
複数のドキュメントを追加する
#### Python
``````python
resp = client.bulk(
operations=[
{
"index": {
"_index": "books"
}
},
{
"name": "Revelation Space",
"author": "Alastair Reynolds",
"release_date": "2000-03-15",
"page_count": 585
},
{
"index": {
"_index": "books"
}
},
{
"name": "1984",
"author": "George Orwell",
"release_date": "1985-06-01",
"page_count": 328
},
{
"index": {
"_index": "books"
}
},
{
"name": "Fahrenheit 451",
"author": "Ray Bradbury",
"release_date": "1953-10-15",
"page_count": 227
},
{
"index": {
"_index": "books"
}
},
{
"name": "Brave New World",
"author": "Aldous Huxley",
"release_date": "1932-06-01",
"page_count": 268
},
{
"index": {
"_index": "books"
}
},
{
"name": "The Handmaids Tale",
"author": "Margaret Atwood",
"release_date": "1985-06-01",
"page_count": 311
}
],
)
print(resp)
`
Ruby
response = client.bulk(
body: [
{
index: {
_index: 'books'
}
},
{
name: 'Revelation Space',
author: 'Alastair Reynolds',
release_date: '2000-03-15',
page_count: 585
},
{
index: {
_index: 'books'
}
},
{
name: '1984',
author: 'George Orwell',
release_date: '1985-06-01',
page_count: 328
},
{
index: {
_index: 'books'
}
},
{
name: 'Fahrenheit 451',
author: 'Ray Bradbury',
release_date: '1953-10-15',
page_count: 227
},
{
index: {
_index: 'books'
}
},
{
name: 'Brave New World',
author: 'Aldous Huxley',
release_date: '1932-06-01',
page_count: 268
},
{
index: {
_index: 'books'
}
},
{
name: 'The Handmaids Tale',
author: 'Margaret Atwood',
release_date: '1985-06-01',
page_count: 311
}
]
)
puts response
Js
const response = await client.bulk({
operations: [
{
index: {
_index: "books",
},
},
{
name: "Revelation Space",
author: "Alastair Reynolds",
release_date: "2000-03-15",
page_count: 585,
},
{
index: {
_index: "books",
},
},
{
name: "1984",
author: "George Orwell",
release_date: "1985-06-01",
page_count: 328,
},
{
index: {
_index: "books",
},
},
{
name: "Fahrenheit 451",
author: "Ray Bradbury",
release_date: "1953-10-15",
page_count: 227,
},
{
index: {
_index: "books",
},
},
{
name: "Brave New World",
author: "Aldous Huxley",
release_date: "1932-06-01",
page_count: 268,
},
{
index: {
_index: "books",
},
},
{
name: "The Handmaids Tale",
author: "Margaret Atwood",
release_date: "1985-06-01",
page_count: 311,
},
],
});
console.log(response);
コンソール
POST /_bulk
{ "index" : { "_index" : "books" } }
{"name": "Revelation Space", "author": "Alastair Reynolds", "release_date": "2000-03-15", "page_count": 585}
{ "index" : { "_index" : "books" } }
{"name": "1984", "author": "George Orwell", "release_date": "1985-06-01", "page_count": 328}
{ "index" : { "_index" : "books" } }
{"name": "Fahrenheit 451", "author": "Ray Bradbury", "release_date": "1953-10-15", "page_count": 227}
{ "index" : { "_index" : "books" } }
{"name": "Brave New World", "author": "Aldous Huxley", "release_date": "1932-06-01", "page_count": 268}
{ "index" : { "_index" : "books" } }
{"name": "The Handmaids Tale", "author": "Margaret Atwood", "release_date": "1985-06-01", "page_count": 311}
エラーがなかったことを示すレスポンスを受け取る必要があります。
例のレスポンスを表示するには展開してください
コンソール-結果
{
"errors": false,
"took": 29,
"items": [
{
"index": {
"_index": "books",
"_id": "QklI2IsBaSa7VYx_Qkh-",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"_seq_no": 1,
"_primary_term": 1,
"status": 201
}
},
{
"index": {
"_index": "books",
"_id": "Q0lI2IsBaSa7VYx_Qkh-",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"_seq_no": 2,
"_primary_term": 1,
"status": 201
}
},
{
"index": {
"_index": "books",
"_id": "RElI2IsBaSa7VYx_Qkh-",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"_seq_no": 3,
"_primary_term": 1,
"status": 201
}
},
{
"index": {
"_index": "books",
"_id": "RUlI2IsBaSa7VYx_Qkh-",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"_seq_no": 4,
"_primary_term": 1,
"status": 201
}
},
{
"index": {
"_index": "books",
"_id": "RklI2IsBaSa7VYx_Qkh-",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"_seq_no": 5,
"_primary_term": 1,
"status": 201
}
}
]
}
データを検索する
インデックスされたドキュメントは、ほぼリアルタイムで検索可能です。
すべてのドキュメントを検索する
次のコマンドを実行して、books
インデックス内のすべてのドキュメントを検索します:
Python
resp = client.search(
index="books",
)
print(resp)
Ruby
response = client.search(
index: 'books'
)
puts response
Js
const response = await client.search({
index: "books",
});
console.log(response);
コンソール
GET books/_search
各ヒットの_source
には、インデックス時に送信された元のJSONオブジェクトが含まれています。
マッチクエリ
特定のフィールドに特定の値を含むドキュメントを検索するには、match
クエリを使用できます。これは、ファジーマッチやフレーズ検索を含むフルテキスト検索を実行するための標準的なクエリです。
次のコマンドを実行して、books
インデックス内のname
フィールドにbrave
を含むドキュメントを検索します:
Python
resp = client.search(
index="books",
query={
"match": {
"name": "brave"
}
},
)
print(resp)
Ruby
response = client.search(
index: 'books',
body: {
query: {
match: {
name: 'brave'
}
}
}
)
puts response
Js
const response = await client.search({
index: "books",
query: {
match: {
name: "brave",
},
},
});
console.log(response);
コンソール
GET books/_search
{
"query": {
"match": {
"name": "brave"
}
}
}