elasticsearch + python 如何使用非全域性的 analyzer

ponponon發表於2023-03-07

當我們建立一個 index 的時候,可以為 index 建立專屬的 analyzer

這個 analyzer 的只是該 index 可見,而不是全域性的

PUT /my_index
{
  "mappings": {
    "properties": {
      "title": { 
        "type": "text",
        "analyzer": "my_analyzer"
      },
      "content": {
        "type": "text"
      }
    }
  },
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": { 
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "my_synonyms"
          ]
        }
      },
      "filter": {
        "my_synonyms": { 
          "type": "synonym",
          "synonyms_path": "analysis/synonyms.txt"
        }
      }
    }
  }
}

有這麼一個需求,我們希望,使用 python sdk 檢視 analyzer 的結果,怎麼辦?

很簡單:

es.indices.analyze(
    index=index_name,
    body={
        "analyzer": "sentence_analyzer",
        "text": content,
    }
)

加上 index=index_name 引數就好了,不然會遇到報錯: failed to find global analyzer [sentence_analyzer]

相關文章