ElasticSearch中同义词和缩略词搜索

vktxenjb  于 2023-06-05  发布在  ElasticSearch
关注(0)|答案(1)|浏览(134)

我将创建索引test_synonym并添加如下数据:

POST /test_synonym/_bulk
{"index":{"_index":"test_synonym","_id":"1"}}
{"name":"test one two","description":"test numbers","synonyms": ["tot, number"]}
{"index":{"_index":"test_synonym","_id":"1"}}
{"name":"test coding","description":"test coding","synonyms": ["tc, program"]}

现在,在创建索引时,我需要创建分析器,因此无法使用上述数据进行同义词搜索,所有示例显示使用单独的synonym.txt或synonym.csv。代替单独的路径如何使用索引test_synonym数据值。如果你在每个记录中看到上面的数据,我已经添加了一个名为同义词的属性。如何使用该属性而不是单独的文本或csv文件。

avwztpqn

avwztpqn1#

好消息!**您不需要任何同义词表,因为同义词数据已经在数据本身中:)

所以只需要查询namesynonyms字段。

POST /test_synonym/_bulk
{"index":{"_index":"test_synonym","_id":"1"}}
{"name":"test one two","description":"test numbers","synonyms": ["tot, number"]}
{"index":{"_index":"test_synonym","_id":"2"}}
{"name":"test coding","description":"test coding","synonyms": ["tc, program"]}

了解默认情况下如何分析数据

POST _analyze
{
  "text": ["tot, number"]
}

查询

GET test_synonym/_search
{
  "query": {
    "multi_match": {
      "query": "tot",
      "fields": ["name", "synonyms"]
    }
  }
}

相关问题