我正在寻找一种在多个字段上执行短语搜索的方法,并且能够将星号(*)通配符用于前缀和后缀搜索。
这是我的例子:
GET /myindex/_search
{
"query": {
"simple_query_string" : {
"query": "mycity mystreet mynumber",
"default_operator": "AND",
"fields": [ "city", "street", "number"]
}
}
}
我使用AND作为默认运算符,因为我希望在查询字符串中的每个单词都可以在指定字段的 any 中找到。
当我在三个字词的短语上方进行测试时,它会匹配三个字段中包含三个字词的记录。
我还可以使用星号执行前缀搜索,例如: myc * mystreet mynumber ,但是我也希望能够执行后缀搜索,例如 * city mystreet mynumber 。但是 simple_query_string 不支持。
当我改用 query_string 时,我可以实现我想要的后缀搜索,但是多字段搜索将像以前一样停止工作。即,必须在列出的字段之一中找到所有单词以符合条件。
最后,我需要能够使用前缀或后缀在多个字段(短语中的每个单词都必须与列出的任何字段匹配)中进行搜索。而且我需要快速搜索...有没有办法做到这一点?