用于ElasticSearch的模拟SQL LIKE命令

时间:2019-01-26 07:27:43

标签: elasticsearch sql-like fuzzy-search

告诉我用于ElasticSearch的模拟SQL LIKE命令。

SQL命令:

SELECT * FROM cities where 'blah Chicago blah' LIKE CONCAT('%', name, '%');

预期输出:[{id:123,名称:'Chicago'}]。


这应该用于文本中实体的模糊搜索。

2 个答案:

答案 0 :(得分:0)

这不正是笏你所需要的,但是我们可以从启动:

{
  "query": {
    "query_string": { "default_field": "Name", "query": "Chicago" }
  }
}

这个查询返回的所有文件与工件Chicago

您可以修改查询:

{
  "query": {
    "query_string": { "default_field": "Name", "query": "*Chicago*" }
  }
}

例如,在这种情况下,您获得的文档包含单词Chicago和包含单词Chicago-ChicagoTown的单词。

答案 1 :(得分:0)

“弹性搜索”不适用于此类任务( 它旨在将文本作为单词数组而不是字符数组来使用)。

现在我在任务中使用pg_trgm(单词_相似性(文本,文本))扩展名。