我是ElasticSearch的新手,阅读了很多关于它的书,但我在一个要求上跌跌撞撞。
考虑 * 索引 * 中所有 * 文档 * 中的 * 文本 * 类型字段为“app_data”
现在,app_data字段始终存储一个单词,但该单词可以是字母数字、数字、字母。
要求-
存储在app_data中的一种类型的单词类似于-
第一个月
现在,如果用户希望搜索此app_data,则输入如下内容"99.IPAB.99999.9"
- 另一个示例 * -索引中的数据
app_data:"78IGDB900459JI"
类似于-"78.IGDB.90045.9"
的用户搜索
如果可行的话,我应该如何构造ES查询来匹配存储在索引文档中的数据?
注意事项-
1.在插入到索引的过程中,我无法编辑数据(使用自定义分析器),因为app_data可能包含简单的单词,如“RED”、“RED 567”。
1.只有对于上面提到的问题,我认为我必须使用自定义分析器沿着查询DSL。
1条答案
按热度按时间i7uaboj41#
假设您的数据已经建立了索引并且不能更改,我的建议是在将搜索词发送到查询之前应用一个模式,删除.“",99.IPAB.99999.9 -〉99 ipab 999999。
这样,您就可以成功地应用match_phrase_prefix。
如果不能将模式应用于输入,可以在搜索时“search_analyzer“应用。
我们建议创建一个生成不带.""的标记的解析器。在查询中添加“analyzer”:“my_analyzer”,这样生成的标记就不带.“”,匹配也会正常工作。
新分析仪:
质询
点击数