Elasticsearch: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
m (Planetoid moved page Elastic search to Elasticsearch) |
||
| (13 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
== Concept mapping == | |||
<table class="wikisort" border="1"> | |||
<tr> | |||
<th>MySQL (RDBMS)</th> | |||
<th>Elasticsearch</th> | |||
<th>Excel</th> | |||
<th>Example Value (Bookstore)</th> | |||
</tr> | |||
<tr> | |||
<td>Table</td> | |||
<td>Index</td> | |||
<td>Worksheet</td> | |||
<td>books</td> | |||
</tr> | |||
<tr> | |||
<td>Row</td> | |||
<td>Document</td> | |||
<td>Row</td> | |||
<td class="code">{ "id": 1, "title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "price": 9.99 }</td> | |||
</tr> | |||
<tr> | |||
<td>Field</td> | |||
<td>Field</td> | |||
<td>Column</td> | |||
<td>title</td> | |||
</tr> | |||
<tr> | |||
<td>Schema</td> | |||
<td>Mapping</td> | |||
<td>Column Headers</td> | |||
<td class="code"><pre>{ | |||
"properties": { | |||
"title": { "type": "text" }, | |||
"author": { "type": "keyword" }, | |||
"price": { "type": "float" } | |||
} | |||
}</pre></td> | |||
</tr> | |||
<tr> | |||
<td>SQL</td> | |||
<td>DSL</td> | |||
<td>Formulas/Filters</td> | |||
<td class="code">SQL: SELECT * FROM books WHERE author = 'F. Scott Fitzgerald' | |||
DSL: { "query": { "term": { "author": "F. Scott Fitzgerald" } } } | |||
Excel: Filter column "author" for "F. Scott Fitzgerald"</td> | |||
</tr> | |||
</table> | |||
== Count the number of documents == | == Count the number of documents == | ||
| Line 12: | Line 61: | ||
SELECT COUNT(*) FROM MY_TABLE | SELECT COUNT(*) FROM MY_TABLE | ||
</pre> | </pre> | ||
== Truncate the index or table == | |||
Elasticsearch: [https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete.html Delete API | Elasticsearch Guide [8.15] | Elastic]<ref>[https://stackoverflow.com/questions/31929695/truncate-index-in-elasticsearch python - Truncate index in elasticsearch - Stack Overflow]</ref> | |||
<pre> | |||
DELETE /MY_INXEX/ | |||
</pre> | |||
MySQL [https://dev.mysql.com/doc/refman/8.4/en/truncate-table.html MySQL :: MySQL 8.4 Reference Manual :: 15.1.37 TRUNCATE TABLE Statement] | |||
<pre> | |||
TRUNCATE MY_TABLE | |||
</pre> | |||
== Create the index or table == | |||
Elasticsearch<ref>[https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html#mappings Create index API | Elasticsearch Guide [8.15] | Elastic]</ref><ref>[https://opster.com/guides/elasticsearch/search-apis/elasticsearch-strings-keyword-vs-text-vs-wildcard/ Elasticsearch Keyword VS. Text - Strings Types Explained]</ref><ref>[https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html Field data types | Elasticsearch Guide [8.15] | Elastic]</ref> | |||
<pre> | |||
PUT /MY_INXEX | |||
{ | |||
"mappings": { | |||
"properties": { | |||
"id": { "type": "keyword" }, | |||
"field1": { "type": "text" } | |||
} | |||
} | |||
} | |||
</pre> | |||
MySQL<ref>[https://dev.mysql.com/doc/refman/8.4/en/create-table.html MySQL :: MySQL 8.4 Reference Manual :: 15.1.20 CREATE TABLE Statement]</ref> | |||
<pre> | |||
CREATE TABLE MY_TABLE ( | |||
id INT AUTO_INCREMENT PRIMARY KEY, | |||
field1 TEXT | |||
) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; | |||
</pre> | |||
== Select all data from index or table == | |||
Elasticsearch<ref>[https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-get-index.html Get index API | Elasticsearch Guide [8.15] | Elastic]</ref> | |||
<pre> | |||
GET /MY_INDEX/_search/?size=1000&pretty=true | |||
</pre> | |||
MySQL<ref>[https://dev.mysql.com/doc/refman/8.4/en/selecting-all.html MySQL :: MySQL 8.4 Reference Manual :: 5.3.4.1 Selecting All Data]</ref> | |||
<pre> | |||
SELECT * | |||
FROM MY_TABLE | |||
LIMIT 1000 | |||
</pre> | |||
or | |||
<pre> | |||
SELECT * | |||
FROM MY_TABLE | |||
</pre> | |||
== Select particular data from index or table (exact match) == | |||
Elasticsearch<ref>[https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-get-index.html Get index API | Elasticsearch Guide [8.15] | Elastic]</ref> | |||
<pre> | |||
GET /MY_INDEX/_search/?q=_id:1 | |||
</pre> | |||
MySQL<ref>[https://dev.mysql.com/doc/refman/8.4/en/selecting-rows.html MySQL :: MySQL 8.4 Reference Manual :: 5.3.4.2 Selecting Particular Rows]</ref> | |||
<pre> | |||
SELECT * | |||
FROM MY_TABLE | |||
WHERE id = 1 | |||
</pre> | |||
== Select particular data from index or table (partial match) == | |||
Elasticsearch<ref>[https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html Boolean query | Elasticsearch Guide [8.15] | Elastic]</ref> | |||
<pre> | |||
GET /MY_INDEX/_search | |||
{ | |||
"query": { | |||
"bool": { | |||
"should": [ | |||
{ | |||
"match": { | |||
"field1": "NVIDIA" | |||
} | |||
} | |||
] | |||
} | |||
} | |||
} | |||
</pre> | |||
MySQL | |||
<pre> | |||
SELECT * | |||
FROM MY_TABLE | |||
WHERE field1 LIKE "%NVIDIA%" | |||
</pre> | |||
== References == | |||
<references /> | |||
[[Category: MySQL]] [[Category: Search]] | [[Category: MySQL]] [[Category: Search]] | ||
Latest revision as of 16:46, 15 October 2024
Concept mapping[edit]
| MySQL (RDBMS) | Elasticsearch | Excel | Example Value (Bookstore) |
|---|---|---|---|
| Table | Index | Worksheet | books |
| Row | Document | Row | { "id": 1, "title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "price": 9.99 } |
| Field | Field | Column | title |
| Schema | Mapping | Column Headers | {
"properties": {
"title": { "type": "text" },
"author": { "type": "keyword" },
"price": { "type": "float" }
}
} |
| SQL | DSL | Formulas/Filters | SQL: SELECT * FROM books WHERE author = 'F. Scott Fitzgerald'
DSL: { "query": { "term": { "author": "F. Scott Fitzgerald" } } } Excel: Filter column "author" for "F. Scott Fitzgerald" |
Count the number of documents[edit]
Elasticsearch: Count API | Elasticsearch Guide [8.15 Elastic]
GET /MY_INXEX/_count
MySQL MySQL :: MySQL 8.4 Reference Manual :: 5.3.4.8 Counting Rows
SELECT COUNT(*) FROM MY_TABLE
Truncate the index or table[edit]
Elasticsearch: Delete API | Elasticsearch Guide [8.15 | Elastic][1]
DELETE /MY_INXEX/
MySQL MySQL :: MySQL 8.4 Reference Manual :: 15.1.37 TRUNCATE TABLE Statement
TRUNCATE MY_TABLE
Create the index or table[edit]
PUT /MY_INXEX
{
"mappings": {
"properties": {
"id": { "type": "keyword" },
"field1": { "type": "text" }
}
}
}
MySQL[5]
CREATE TABLE MY_TABLE ( id INT AUTO_INCREMENT PRIMARY KEY, field1 TEXT ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Select all data from index or table[edit]
Elasticsearch[6]
GET /MY_INDEX/_search/?size=1000&pretty=true
MySQL[7]
SELECT * FROM MY_TABLE LIMIT 1000
or
SELECT * FROM MY_TABLE
Select particular data from index or table (exact match)[edit]
Elasticsearch[8]
GET /MY_INDEX/_search/?q=_id:1
MySQL[9]
SELECT * FROM MY_TABLE WHERE id = 1
Select particular data from index or table (partial match)[edit]
Elasticsearch[10]
GET /MY_INDEX/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"field1": "NVIDIA"
}
}
]
}
}
}
MySQL
SELECT * FROM MY_TABLE WHERE field1 LIKE "%NVIDIA%"
References[edit]
- ↑ python - Truncate index in elasticsearch - Stack Overflow
- ↑ Create index API | Elasticsearch Guide [8.15 | Elastic]
- ↑ Elasticsearch Keyword VS. Text - Strings Types Explained
- ↑ Field data types | Elasticsearch Guide [8.15 | Elastic]
- ↑ MySQL :: MySQL 8.4 Reference Manual :: 15.1.20 CREATE TABLE Statement
- ↑ Get index API | Elasticsearch Guide [8.15 | Elastic]
- ↑ MySQL :: MySQL 8.4 Reference Manual :: 5.3.4.1 Selecting All Data
- ↑ Get index API | Elasticsearch Guide [8.15 | Elastic]
- ↑ MySQL :: MySQL 8.4 Reference Manual :: 5.3.4.2 Selecting Particular Rows
- ↑ Boolean query | Elasticsearch Guide [8.15 | Elastic]