本节书摘来华章计算机《深入理解elasticsearch(原书第2版)》一书中的第2章 ,第2.2.1节,[美]拉斐尔·酷奇(rafal ku) 马雷克·罗戈任斯基(marek rogoziski)著 张世武 余洪淼 商旦 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
演示查询改写过程的最好方式莫过于通过范例深入了解该过程的内部实现机制,尤其是要去了解原始查询中的词项是如何被改写成目标查询中那些词项的。假设我们索引了下面这些文档中的数据:
现在我们想找出索引中所有name字段以字母j开头的文档。简单起见,我们在clients索引中执行以下查询:
这里使用了一个简单的前缀查询,想检索出所有name字段以字母j开头的文档。我们同时也设置了查询改写属性以确定执行查询改写的具体方法,不过现在我们跳过该参数,具体的参数值将在本章的后续部分讨论。
执行前面的查询以后,我们将得到下面的结果:
如你所见,返回结果中有3个文档,这些文档的name字段以字母j开头。我们并没有显式设置待查询索引的映射,因此elasticsearch探测出了name字段的映射,并将其设置为字符串类型并进行文本分析。可使用下面的命令进行检查: