Elastic kopya kağıdı

Başlangıç olarak ilk şey, CURL sorgu göndermeyi öğrenin ve Sense eklentisini kurmayı öğrenin!

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:[20161201 TO 20161231]

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:

Elasticsearch node cluster yapısı kurulumu