如何使用python中的同义词在elasticsearch中搜索查询

9avjhtql  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(1)|浏览(413)

我无法理解ElasticSearch查询和同义词表的实现。对于一般查询,我没有任何搜索问题,但是合并同义词对我来说是个问题。

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

            }

        }
    }
)

另外,是否可以使用文件而不是数组?

jdg4fx2g

jdg4fx2g1#

检查文档mentation: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
          }
        }
      }
    }
  }
}

请注意:
同义词文件中的更改不会反映在更改前索引的文档中。同样的问题需要重新索引。
不能更改现有字段的Map(包括分析器)。如果要更改现有文档的Map,需要做的是使用更新的Map将这些文档重新索引到另一个索引。
搜索查询不支持“设置”。

相关问题