当我们建立一个 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]


universe_king
3.4k 声望680 粉丝