带空格的Elasticsearch match_phrase_query不起作用

时间:2017-07-11 15:14:37

标签: java-ee elasticsearch spring-data-elasticsearch

当我使用包含空格的字符串创建match_phrase_query时出现问题,但并不总是= /

3个例子:

1 /

  {
    "query" : {
              "match_phrase_prefix" : {
                "username" : {
                  "query":"maury"
                }
              }
    }
}

这个第一个例子有用,给我结果。

2 /

  {
    "query" : {
              "match_phrase_prefix" : {
                "username" : {
                  "query":"maury chelsea"
                }
              }
    }
}

第二个例子,全名也有效。

3 /

  {
    "query" : {
              "match_phrase_prefix" : {
                "username" : {
                  "query":"maury ch"
                }
              }
    }
}

这个例子不起作用,我没有结果返回。我不理解,因为它使用1个单词,2个单词,第2个单词最少3-4个字符,具体取决于我搜索的人的姓名。

您是否已经遇到过此问题?

谢谢你,Ludovic

1 个答案:

答案 0 :(得分:0)

这是因为您有很多以ch开头的字词。尝试添加max_expansions参数(默认为50)并将其增加到(例如)100以查看是否获得结果。

  {
    "query" : {
              "match_phrase_prefix" : {
                "username" : {
                  "query":"maury ch",
                  "max_expansions": 100     <--- add this
                }
              }
    }
}

official doc explains您遇到此问题的原因。