如何将部分结果与Elastic Search匹配?

时间:2018-01-04 11:20:00

标签: elasticsearch

我试图找出如何正确编写查询以便使用ElasticSearch进行LIKE查询。

我们说我有一个名字的记录,我想找到其中有ma的每一个。

所以我尝试了很多东西,但没有一个在起作用。这是一个清单:

  • {"match": {"text": ".*ma.*"}}
  • {"match": {"text": "*ma*"}}
  • {"match":{"text"{"query":"ma","fuzziness":"AUTO","prefix_length":1}}}

你知道如何做到这一点或我在哪里错过了什么?

1 个答案:

答案 0 :(得分:1)

您可以考虑使用N-Gram tokenizer将文档的标记拆分为子字符串。

这将允许您使用您正在描述的“部分”匹配来搜索索引。

请记住,这会影响您的文档被标记为搜索的方式,因此,如果您对应用程序的其他部分使用其他类型的分析,则可能需要为N-Gram标记化值创建其他字段(或甚至为他们创建一个单独的索引。)

根据经验,始终尝试针对您要执行的查询优化索引,而不是在查询时尝试解决搜索问题。