Elasticsearch简单搜索包含多个字段

时间:2018-02-02 16:21:13

标签: elasticsearch autocomplete

我有一个包含许多字段的系统,我们的要求是当您搜索某个字词时,它会搜索许多字段以作为自动完成的一部分返回。

例如,您可以在一个框中搜索公司名称,公司地址第1行,邮政编码,电话号码等。如果您输入my co,这将与公司名称my company匹配,请键入例如,612 wharf会匹配612 wharf ave的地址行1。

我找到了许多搜索弹性的不同方法的例子,但我找不到正确的配置来进行这种简单的搜索。我尝试使用text将我的字段设置为field_data,这在某些情况下有效,但在其他情况下无效。使用空格搜索往往不适用于我的查询字符串。也就是说,搜索612会导致612 wharf ave,但612 wharf则不会。

我应该使用哪些字段分析器,以及在此用例中我应该进行哪种类型的搜索?

我找到的分析仪选项:

  • 文本分析器
  • 带字段数据的文本分析器
  • 关键字(不起作用,因为我不会每次都输入完整的值)
  • Custom autocomplete analyzer

我找到的搜索选项:

  • QueryString
  • MultiMatch
  • 建议(这与多领域有关吗?我无法找到方法)
  • 匹配(不适用于多字段)

我已经尝试了大部分这些组合,但我没有找到一个按我想要的方式工作。 我想要的只是一个简单的包含跨多个字段的搜索,我尝试过的任何内容似乎都无法使用。

示例搜索表:

Search    | Expect to get company that has this field | In my testing:
612       | Line1: 612 wharf ave                      | this works with querystring
612 wharf | Line1: 612 wharf ave                      | doesn't work with QS
comp      | Name: My Company                          | works with QS
my co     | Name: My Company                          | doesn't work with QS

0 个答案:

没有答案