我试图找出如何正确编写查询以便使用ElasticSearch进行LIKE
查询。
我们说我有一个名字的记录,我想找到其中有ma
的每一个。
所以我尝试了很多东西,但没有一个在起作用。这是一个清单:
{"match": {"text": ".*ma.*"}}
{"match": {"text": "*ma*"}}
{"match":{"text"{"query":"ma","fuzziness":"AUTO","prefix_length":1}}}
你知道如何做到这一点或我在哪里错过了什么?
答案 0 :(得分:1)
您可以考虑使用N-Gram tokenizer将文档的标记拆分为子字符串。
这将允许您使用您正在描述的“部分”匹配来搜索索引。
请记住,这会影响您的文档被标记为搜索的方式,因此,如果您对应用程序的其他部分使用其他类型的分析,则可能需要为N-Gram标记化值创建其他字段(或甚至为他们创建一个单独的索引。)
根据经验,始终尝试针对您要执行的查询优化索引,而不是在查询时尝试解决搜索问题。