Sök…


Anmärkningar

Analysatorer tar texten från ett strängfält och genererar tokens som kommer att användas vid fråga.

En analysator fungerar i en sekvens:

  • CharFilters (noll eller mer)
  • Tokenizer (en)
  • TokenFilters (Noll eller mer)

Analysatorn kan appliceras på kartläggningar så att när fält indexeras görs det per tokenbasis snarare än på strängen som helhet. När du frågar kommer inputsträngen också att köras genom analysatorn. Därför, om du normaliserar text i analysatorn, kommer den alltid att matcha även om frågan innehåller en icke-normaliserad sträng.

kartläggning

En analysator kan tillämpas på en kartläggning med "analysator", som standard används "standard" -analysatorn. Alternativt, om du inte vill använda någon analysator (eftersom tokenisering eller normalisering inte skulle vara användbar) kan du ange "index": "not_analyzed"

PUT my_index 
{
  "mappings": {
    "user": {
      "properties": {
        "name": {
          "type": "string"
          "analyzer":  "my_user_name_analyzer"
        },
        "id": {
          "type": "string",
          "index": "not_analyzed"
        }
      }
    }
  }
}

Multi-fält

Ibland kan det vara bra att ha flera distinkta index för ett fält med olika analysatorer. Du kan använda kapaciteten för flera fält för att göra det.

PUT my_index 
{
  "mappings": {
    "user": {
      "properties": {
        "name": {
          "type": "string"
          "analyzer": "standard",
          "fields": {
            "special": {
               "type": "string",
               "analyzer": "my_user_name_analyzer"
            },
            "unanalyzed": {
              "type": "string",
              "index": "not_analyzed"
            }
          }
        }
      }
    }
  }
}

I stället för att helt enkelt använda "user.name" (som i detta fall fortfarande skulle använda stanard Analyzer) kan du använda "user.name.special" eller "user.name.unanalyzed". Observera att dokumentet förblir oförändrat, detta påverkar bara indexeringen.

analysatorer

Analys inom elasticsearch kommer i sammanhang när du är villig att analysera data i ditt index.

Analysatorer tillåter oss att utföra följande:

  • förkortningar
  • stemming
  • Skrivhantering

Vi kommer att titta på var och en av dem nu.

  1. Förkortningar :

    Med hjälp av analysatorer kan vi berätta för elasticsearch hur man ska behandla förkortningar i våra data, dvs.

  1. Stämmer :

    Genom att använda stemming i analysatorer kan vi använda basord för modifierade verb som

    Ord ändringar
    fordra krav, krävs
  1. Skrivhantering :

    Analysatorer tillhandahåller också typhantering som när de frågar om vi söker efter specifikt ord säga 'uppståndelse', då kommer elasticsearch att återge resultat där typfiler finns.

    Ord ändringar
    uppståndelse resurection, uppståndelse

Analysatorer i Elasticsearch

  1. Standard

  2. Enkel

  3. mellanslag

  4. Sluta

  5. Nyckelord

  6. Mönster

  7. Språk

  8. Snöboll

Ignorera fallanalysatorn

Ibland kan vi behöva ignorera fallet med vår fråga, med avseende på matchen i dokumentet. En analysator kan användas i det här fallet för att ignorera fallet när du söker. Varje fält måste innehålla denna analysator i sin egendom för att fungera:

"settings": {
        "analysis": {
            "analyzer": {
                "case_insensitive": {
               "tokenizer": "keyword",
               "filter": ["lowercase"]
            }
            }
        }
    }


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow