ElasticSearch - query_string问题

时间:2016-07-19 21:30:54

标签: elasticsearch

我正在尝试对多个(7)字段进行查询,并且需要在所有位置(结束,开始,中间)支持通配符。我使用的是query_string:

    { "query_string": { "query": "ABCD-EFGH",
      "fields": [ "f1^5", "f2", "f3", "f4", "f5", "f6" ] }}

f1..f7是使用此分析器的字符串:

  "analyzer": {
    "uppercaseAnalyzer": {
      "tokenizer": "keyword",
      "filter":  [ "uppercase" ]
    }

所以这很好用,通配符工作正常。但是,某些查询可能包含空格,因此:

    { "query_string": { "query": "AB CD  EFGH",
      "fields": [ "f1^5", "f2", "f3", "f4", "f5", "f6" ] }}

失败。用户将输入“ab cd efgh”,我需要返回“ab cd efgh”。我有点使用“查询”:“\”ab cd efgh \“”,但这打破了通配符。

任何解决方案?我看到一些关于使用反斜杠转义空格的旧文章,但这会在2.3中产生错误。

如果我必须索引没有空格的f1..f7的第二个副本,那么这将使我的索引的大小加倍。

如果我使用通配符而不是query_string,它会按预期工作,但性能会受损。

0 个答案:

没有答案