Looking for elasticsearch Answers? Try Ask4KnowledgeBase
Looking for elasticsearch Keywords? Try Ask4Keywords

ElasticsearchElasticsearch-konfiguration


Anmärkningar

Elasticsearch levereras med en uppsättning standardvärden som ger en god upplevelse för utveckling. Det implicita uttalandet där är att det inte nödvändigtvis är bra för produktion, som måste skräddarsys för dina egna behov och därför inte kan förutsägas.

Standardinställningarna gör det enkelt att ladda ner och köra flera noder på samma maskin utan några konfigurationsändringar.

Var är inställningarna?

Inuti varje installation av Elasticsearch finns en config/elasticsearch.yml . Det är där följande inställningar bor:

  • cluster.name
    • Namnet på det kluster som noden går med i. Alla noder i samma kluster måste ha samma namn.
    • För närvarande är standard för elasticsearch .
  • node.*
    • node.name
      • Om inte levereras kommer ett slumpmässigt namn att genereras varje gång noden startar . Detta kan vara roligt, men det är inte bra för produktionsmiljöer.
      • Namnen behöver inte vara unika, men de bör vara unika.
    • node.master
      • En boolesk inställning. När det är true betyder det att noden är en valbar huvudnod och att den kan vara den valda huvudnoden.
      • Som standard är true , vilket betyder att varje nod är en kvalificerad huvudnod.
    • node.data
      • En boolesk inställning. När det är true betyder det att noden lagrar data och hanterar sökaktivitet.
      • Standardvärdet är true .
  • path.*
    • path.data
      • Platsen som filer skrivs för noden. Alla noder använder den här katalogen för att lagra metadata, men datanoderna kommer också att använda den för att lagra / indexera dokument.
      • Standardvärdet för ./data .
        • Detta innebär att data skapas för dig som en peer-katalog för att config inuti Elasticsearch-katalogen.
    • path.logs
      • Platsen som loggfiler skrivs.
      • Standardvärdet för ./logs .
  • network.*
    • network.host

      • Standardvärdet till _local_ , som är effektivt localhost .
        • Detta innebär att noder som standard inte kan kommuniceras med utanför den aktuella maskinen!
    • network.bind_host

      • Potentiellt en matris, detta berättar för Elasticsearch vilka adresser för den aktuella maskinen också binder uttag.
        • Det är denna lista som gör att maskiner utanför maskinen (t.ex. andra noder i klustret) kan prata med den här noden.
      • Standardinställningar för network.host .
    • network.publish_host

      • En enkel värd som används för att annonsera till andra noder hur man bäst kan kommunicera med denna nod.
        • När de tillhandahåller en array till network.bind_host , bör detta vara en värd som är avsedd att användas för inter-nod kommunikation.
      • Standardinställningar för nätverk.host`.
  • discovery.zen.*
    • discovery.zen.minimum_master_nodes
      • Definierar kvorum för mästerval. Detta måste ställas in med hjälp av denna ekvation: (M / 2) + 1 där M är antalet kvalificerade huvudnoder (noder som använder node.master: true implicit eller uttryckligen).
      • Standardvärdet är 1 , vilket endast är giltigt för ett enda nodkluster!
    • discovery.zen.ping.unicast.hosts
      • Mekanismen för att ansluta denna nod till resten av ett kluster.
      • Detta bör lista berättigade huvudnoder så att en nod kan hitta resten av klustret.
      • Värdet som ska användas här är network.publish_host för de andra noderna.
      • Standardvärdet för localhost , vilket innebär att den bara ser på den lokala maskinen för att ett kluster ska gå med.

Vilken typ av inställningar finns?

Elasticsearch erbjuder tre olika typer av inställningar:

  • Cluster-breda inställningar
    • Det här är inställningar som gäller för allt i klustret, till exempel alla noder eller alla index.
  • Nodinställningar
    • Det här är inställningar som gäller bara den aktuella noden.
  • Indexinställningar
    • Det här är inställningar som gäller bara indexet.

Beroende på inställning kan det vara:

  • Förändrades dynamiskt vid körning
  • Ändrades efter en omstart (stäng / öppen) av indexet
    • Vissa inställningar på indexnivå kräver inte att indexet ska stängas och öppnas igen, men kan kräva att indexet tvångsförenas igen för att inställningen ska tillämpas.
      • Kompressionsnivån för ett index är ett exempel på denna typ av inställning. Det kan ändras dynamiskt, men bara nya segment utnyttjar förändringen. Så om ett index inte kommer att ändras, utnyttjar det aldrig ändringen om du inte tvingar indexet att återskapa sina segment.
  • Ändrade efter en omstart av noden
  • Ändrade efter en omstart av klustret
  • Har aldrig förändrats

Kontrollera alltid dokumentationen för din version av Elasticsearch för vad du kan eller inte kan göra med en inställning.

Hur kan jag tillämpa inställningar?

Du kan ställa inställningar på några sätt, av vilka några inte föreslås:

  • Kommandoradsargument

I Elasticsearch 1.x och 2.x kan du skicka in de flesta inställningar som Java-systemegenskaper förinställda med es. :

$ bin/elasticsearch -Des.cluster.name=my_cluster -Des.node.name=`hostname`

I Elasticsearch 5.x ändras detta för att undvika att använda Java-systemegenskaper, istället använder du en anpassad argumenttyp med -E i stället för -Des. :

$ bin/elasticsearch -Ecluster.name=my_cluster -Enode.name=`hostname`

Denna strategi för att tillämpa inställningar fungerar bra när du använder verktyg som Puppet, Chef eller Ansible för att starta och stoppa klustret. Men det fungerar mycket dåligt när man gör det manuellt.

  • YAML-inställningar
    • Visas i exempel
  • Dynamiska inställningar
    • Visas i exempel

Den ordning som inställningarna tillämpas är i den mest dynamiska ordningen:

  1. Övergående inställningar
  2. Persistenta inställningar
  3. Kommandoradsinställningar
  4. YAML (statiska) inställningar

Om inställningen ställs in två gånger, en gång på någon av dessa nivåer, träder den högsta nivån i kraft.

Elasticsearch-konfiguration Relaterade exempel