18/03/2016 - ELASTICSEARCH
Elasticsearch ile sadece istediğimiz kayıtları seçmek için operator
özelliğini kullanırız. Farklılıkları görmek için aşağıdaki sorgulara bakın. Daha fazla bilgi için Match Query sayfasını okuyun.
+----+---------+-------------+-------------+------+-------+--------------+---------------------+
| id | title | description | author | year | price | is_published | created_at |
+----+---------+-------------+-------------+------+-------+--------------+---------------------+
| 1 | Eltit B | Desc | Andy | 2015 | 2.50 | 1 | 2016-03-11 23:36:33 |
| 2 | Title 1 | Desc 1 | Pacino | 2015 | 2.50 | 1 | 2016-03-11 23:36:33 |
| 3 | Title 1 | Cript A | DeNiro | 2010 | 1.00 | 0 | 2016-03-11 23:36:33 |
| 4 | Eltit | Desc | Al | 2000 | 4.00 | 0 | 2016-03-11 23:36:33 |
| 5 | Eltit B | Cript A | Andy Garcia | 2015 | 5.55 | 0 | 2016-03-11 23:36:33 |
| 6 | Eltit A | Desc | Al Pacino | 2000 | 3.99 | 0 | 2016-03-11 23:36:33 |
| 7 | Title 3 | Desc 2 | Al | 2010 | 0.50 | 1 | 2016-03-11 23:36:33 |
+----+---------+-------------+-------------+------+-------+--------------+---------------------+
7 rows in set (0.05 sec)
Bu sorgu "title" alanında "Title" kelimesi bulunan kayıtları seçer.
# Elasticsearch
curl -XGET "http://127.0.0.1:9203/_search?post_dev" -d'
{
"query": {
"match": {
"title": {
"query": "Title"
}
}
},
"sort": [
{
"id": {
"order": "asc"
}
}
],
"from": "0",
"size": "10"
}'
# SQL
SELECT *
FROM post
WHERE MATCH(`title`) AGAINST ('Title' IN BOOLEAN MODE)
ORDER BY id ASC
LIMIT 10
OFFSET 0;
+----+---------+-------------+--------+------+-------+--------------+---------------------+
| id | title | description | author | year | price | is_published | created_at |
+----+---------+-------------+--------+------+-------+--------------+---------------------+
| 2 | Title 1 | Desc 1 | Pacino | 2015 | 2.50 | 1 | 2016-03-11 23:36:33 |
| 3 | Title 1 | Cript A | DeNiro | 2010 | 1.00 | 0 | 2016-03-11 23:36:33 |
| 7 | Title 3 | Desc 2 | Al | 2010 | 0.50 | 1 | 2016-03-11 23:36:33 |
+----+---------+-------------+--------+------+-------+--------------+---------------------+
3 rows in set (0.00 sec)
Bu sorgu "title" alanında "Title" veya "Eltit" kelimesi bulunan kayıtları seçer.
# Elasticsearch
curl -XGET "http://127.0.0.1:9203/_search?post_dev" -d'
{
"query": {
"match": {
"title": {
"query": "Title Eltit"
}
}
},
"sort": [
{
"id": {
"order": "asc"
}
}
],
"from": "0",
"size": "10"
}'
# SQL
SELECT *
FROM post
WHERE MATCH(`title`) AGAINST ('Title Eltit' IN BOOLEAN MODE)
ORDER BY id ASC
LIMIT 10
OFFSET 0;
+----+---------+-------------+-------------+------+-------+--------------+---------------------+
| id | title | description | author | year | price | is_published | created_at |
+----+---------+-------------+-------------+------+-------+--------------+---------------------+
| 1 | Eltit B | Desc | Andy | 2015 | 2.50 | 1 | 2016-03-11 23:36:33 |
| 2 | Title 1 | Desc 1 | Pacino | 2015 | 2.50 | 1 | 2016-03-11 23:36:33 |
| 3 | Title 1 | Cript A | DeNiro | 2010 | 1.00 | 0 | 2016-03-11 23:36:33 |
| 4 | Eltit | Desc | Al | 2000 | 4.00 | 0 | 2016-03-11 23:36:33 |
| 5 | Eltit B | Cript A | Andy Garcia | 2015 | 5.55 | 0 | 2016-03-11 23:36:33 |
| 6 | Eltit A | Desc | Al Pacino | 2000 | 3.99 | 0 | 2016-03-11 23:36:33 |
| 7 | Title 3 | Desc 2 | Al | 2010 | 0.50 | 1 | 2016-03-11 23:36:33 |
+----+---------+-------------+-------------+------+-------+--------------+---------------------+
7 rows in set (0.05 sec)
Bu sorgu "title" alanında "Title" kelimesi bulunan kayıtları seçer. Aslında operator
özelliğini eklemenize gerek yok ama ben sadece nasıl kullanılacağını göstermek için ekledim. Bu sorgu yukarıdaki Sorgu 1 ile aynı sayılır.
# Elasticsearch
curl -XGET "http://127.0.0.1:9203/_search?post_dev" -d'
{
"query": {
"match": {
"title": {
"query": "Title",
"operator": "and"
}
}
},
"sort": [
{
"id": {
"order": "asc"
}
}
],
"from": "0",
"size": "10"
}'
# SQL
SELECT *
FROM post
WHERE MATCH(`title`) AGAINST ('Title' IN BOOLEAN MODE)
ORDER BY id ASC
LIMIT 10
OFFSET 0;
+----+---------+-------------+--------+------+-------+--------------+---------------------+
| id | title | description | author | year | price | is_published | created_at |
+----+---------+-------------+--------+------+-------+--------------+---------------------+
| 2 | Title 1 | Desc 1 | Pacino | 2015 | 2.50 | 1 | 2016-03-11 23:36:33 |
| 3 | Title 1 | Cript A | DeNiro | 2010 | 1.00 | 0 | 2016-03-11 23:36:33 |
| 7 | Title 3 | Desc 2 | Al | 2010 | 0.50 | 1 | 2016-03-11 23:36:33 |
+----+---------+-------------+--------+------+-------+--------------+---------------------+
3 rows in set (0.00 sec)
Bu sorgu "title" alanında "Title" veya "Eltit" kelimesi bulunan kayıtları seçer. Bu sorgu yukarıdaki Sorgu 2 ile aynı sayılır.
# Elasticsearch
curl -XGET "http://127.0.0.1:9203/_search?post_dev" -d'
{
"query": {
"match": {
"title": {
"query": "Title Eltit",
"operator": "or"
}
}
},
"sort": [
{
"id": {
"order": "asc"
}
}
],
"from": "0",
"size": "10"
}'
# SQL
SELECT *
FROM post
WHERE MATCH(`title`) AGAINST ('Title Eltit' IN BOOLEAN MODE)
ORDER BY id ASC
LIMIT 10
OFFSET 0;
+----+---------+-------------+-------------+------+-------+--------------+---------------------+
| id | title | description | author | year | price | is_published | created_at |
+----+---------+-------------+-------------+------+-------+--------------+---------------------+
| 1 | Eltit B | Desc | Andy | 2015 | 2.50 | 1 | 2016-03-11 23:36:33 |
| 2 | Title 1 | Desc 1 | Pacino | 2015 | 2.50 | 1 | 2016-03-11 23:36:33 |
| 3 | Title 1 | Cript A | DeNiro | 2010 | 1.00 | 0 | 2016-03-11 23:36:33 |
| 4 | Eltit | Desc | Al | 2000 | 4.00 | 0 | 2016-03-11 23:36:33 |
| 5 | Eltit B | Cript A | Andy Garcia | 2015 | 5.55 | 0 | 2016-03-11 23:36:33 |
| 6 | Eltit A | Desc | Al Pacino | 2000 | 3.99 | 0 | 2016-03-11 23:36:33 |
| 7 | Title 3 | Desc 2 | Al | 2010 | 0.50 | 1 | 2016-03-11 23:36:33 |
+----+---------+-------------+-------------+------+-------+--------------+---------------------+
7 rows in set (0.05 sec)
Bu sorgu "title" alanında aynı anda "Title" ve "Eltit" kelimeleri bulunan kayıtları seçer.
# Elasticsearch
curl -XGET "http://127.0.0.1:9203/_search?post_dev" -d'
{
"query": {
"match": {
"title": {
"query": "Title Eltit",
"operator": "and"
}
}
},
"sort": [
{
"id": {
"order": "asc"
}
}
],
"from": "0",
"size": "10"
}'
Empty set (0.00 sec)