如何使用Python中的同义词在弹性搜索中搜索查询

问题描述

我无法理解弹性搜索查询以及同义词表的实现。有了一般查询,我没有任何搜索问题,但是将同义词合并成为我的问题。

es.search(index='data_inex',body={
        "query": {
            "match": {"inex": "tren"}
        },"settings": {
            "filter": {
                "synonym": {
                  "type": "synonym","lenient": true,"synonyms": [ "foo,baz","tren,hut" ]
              }
            
            }
        
        }
    }
)

还可以使用文件代替此数组吗?

解决方法

检查文档Click Here

您也可以配置同义词文件:

PUT /test_index
{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "synonym": {
            "tokenizer": "whitespace","filter": [ "synonym" ]
          }
        },"filter": {
          "synonym": {
            "type": "synonym","synonyms_path": "analysis/synonym.txt" // <======== location of synonym file
          }
        }
      }
    }
  }
}

请注意:

  1. 同义词文件中的更改不会反映在更改之前建立索引的文档中。为此,需要重新索引。

  2. 您不能更改现有字段的映射(包括分析器)。如果要更改现有文档的映射,需要做的是使用更新后的映射将这些文档重新索引到另一个索引。

  3. 搜索查询不支持“设置”。