Elastic kopya kağıdı
Başlangıç olarak ilk şey, CURL sorgu göndermeyi öğrenin ve Sense eklentisini kurmayı öğrenin!
- Elasticsearch: The Definitive Guide: Elastic resmi kitap
- Elasticsearch Reference: Resmi dökümantasyon
- Found Play: JSFiddle benzeri elastic çalışma alanı
SORGULAR
Temel sorgular için iki söz dizimi vardır: Üstteki, herhangi bir seçeneği kullanamayacağınız basit bir dizilim ve altta ki genişletilmiş bir sözdizimi. Gelişmiş sorgular gönderebilmek için alttakini tercih edebilirsiniz.
GET _search { "query": { "match": { "FIELD": "TEXT" } } } ---------------------------------------------------
GET _search { "query": { "match": { "FIELD": { "query": "TEXT", "OPTION": "VALUE" } } } }
aggregation, highlight, filter v.b kriterler ile tam arama:
GET /_search { "query": { "bool": { "must": [ { "match": { "title": "ahmet" } } ], "must_not": [ { "match_phrase": { "title": "ahmet öztürk" } } ], "filter": [ { "exists": { "field": "title" } } ] } }, "aggs": { "my_agg": { "terms": { "field": "user", "size": 10 } } }, "highlight": { "pre_tags": [ "<em>" ], "post_tags": [ "</em>" ], "fields": { "body": { "number_of_fragments": 1, "fragment_size": 20 }, "title": {} } }, "size": 20, "from": 100, "_source": [ "title", "id" ], "sort": [ { "_id": { "order": "desc" } } ] }
Ortak Sorgular:
"multi_match": { "query": "Elastic", "fields": ["user.*", "title^3"], "type": "best_fields" }
"bool": { "must": [], "must_not": [], "filter": [], "should": [], "minimum_should_match" : 1 }
"range": { "age": { "gte": 10, "lte": 20, "boost": 2 } }
Kısaca QueryString söz dizimi özeti:
Tüm alanlarda (_all
) varsayılan arama
GET /_search?q=ahmet
Operatörlü kompleks arama ve boost ile tam cümle arama:
GET /_search?q=title:(ali OR veli) AND author:“Ahmet ÖZTÜRK”^2
Joker karakterler ile özel arama yapma (* ve ? kullanımı):
GET /_search?q=_exists_:title OR title:t?k karakterveyab*surukarakter
Yaklaşık ve tarih aralığı ile arama yapma:
GET /_search?q=title:ahmetöz~3 AND date:[2016–12–01 TO 2016–12–31]
Indexleme ve Mapping İşlemleri:
Mapping ve ayarları ile index oluşturma:
PUT /index_adim { "settings": { "number_of_replicas": 1, "number_of_shards": 3, "analysis": {}, "refresh_interval": "1s" }, "mappings": { "my_type_name": { "properties": { "title": { "type": "text", "analyzer": "turkish" } } } } }
Anlık mapping ayarlarını değiştirme:
PUT /index_adim/_settings { "index": { "refresh_interval": "-1", "number_of_replicas": 0 } }
Index’e alan ekleyerek dizini güncelleme:
PUT /index_adim/_mapping/my_type_name { "my_type_name": { "properties": { "tag": { "type": "keyword" } } } }
Mapping ve Settings’i alma
GET /index_adim/_mapping
GET /index_adim/_settings
Döküman oluşturma(mysqlde ki autoincrement benzeri)
POST /index_adim/my_type_name { "title": "elastic", "tag": [ "Ahmet" ] }
Döküman Oluşturma ya da güncelleme:
Oluşturduğunuz bir dökümanı id numarası ile tekrar farklı içeriklele gönderirseniz veriyi güncelleyecektir.
PUT /index_adim/my_type_name/12abc { "title": "elastic", "tag": [ "Ahmet" ] }
Döküman silme:
DELETE /index_adim/my_type_name/12abc
İşlemci veya Ram tasarrufu için index açma/kapama:
POST /index_adim/_close
POST /index_adim/_open
Alliases Listeleme:
GET /_aliases
GET /index_adim/_alias/*
GET /*/_alias/*
GET /*/_alias/foo
Indices görüntüleme:
GET /index_adim/_stats
GET /index_adim/_stats
GET /index_adim/_segments
GET /index_adim/_recovery?pretty&human
Indices durum ve yönetimi:
POST /index_adim/_cache/clear
POST /index_adim/_refresh
POST /index_adim/_flush
POST /index_adim/_forcemerge
POST /index_adim/_upgrade
GET /index_adim/_upgrade?pretty&human
Cluster yönetimi:
Cluster ve node bilgileri görüntüleme:
GET /_cluster/health?pretty
GET /_cluster/health?wait_for_status=yellow&timeout=50s
GET /_cluster/state
GET /_cluster/stats?human&pretty
GET /_cluster/pending_tasks
GET /_nodes
GET /_nodes/stats
GET /_nodes/nodeId1,nodeId2/stats
Bir node’tan başka node’a Shard taşıma:
Node 1’in 0 numaralı Shard’ını Node 2’ye taşıma:
POST /_cluster/reroute { "commands": [ { "move": { "index": "index_adim", "shard": 0, "from_node": "node1", "to_node": "node2" } }, { "allocate": { "index": "index_adim", "shard": 1, "node": "node3" } } ] }
Ayarları güncelleme:
PUT /_cluster/settings { "persistent": { "discovery.zen.minimum_master_nodes": 3 } }
PUT /_cluster/settings { "transient": { "discovery.zen.minimum_master_nodes": 2 } }
Shard allocation devre dışı bırakma ya da aktif hale getirme:
cluster restart öncesi çok kullanışlı olmaktadır.
PUT /_cluster/settings { "transient" : { "cluster.routing.allocation.enable" : "none" } }
PUT /_cluster/settings { "transient" : { "cluster.routing.allocation.enable" : "all" } }
Diğer Bilgiler:
Varsayılan portlar neler?
Kibana: http://localhost:5601/.
Elasticsearch: http://localhost:9200/
Doğru HEAP SIZE değeri ne olmalı?
En iyi ram değeri toplam ram miktarının yüzde ellisi ve maksimum olarak 32 gb olmalıdır. Yani 1 TB ram varsa bunun 512 gigabyte’ı heap size olarak kullanılmalı ve node başına java’dan dolayı maksimum olarak 32 gb verilmelidir.
Ubuntu/Debian server kullandığınızı varsayarsak:
/etc/security/limits.conf
elasticsearch – nofile 65535
elasticsearch – memlock unlimited
/etc/default/elasticsearch (CentOS/RH: /etc/sysconfig/elasticsearch)
ES_HEAP_SIZE=20g
MAX_OPEN_FILES=65535
MAX_LOCKED_MEMORY=unlimited
En iyi elasticsearch.yml ayarları için altta ki yazıma göz atabilirsiniz: