多键前缀多键搜索

时间:2017-05-10 14:17:11

标签: elasticsearch

用户想要按姓名搜索某人,并输入如下内容:

  • “Pe Lu”
  • “Peter L”
  • “Lustig P”

所有这些都应与“Peter Lustig”相匹配。

使用具有firstname和lastname split的默认设置对数据建立索引。

我尝试使用bool“should”查询使用默认前缀搜索,将查询字词拆分为空格。

bool
    should
         prefix
               firstName Pe
         prefix
               name Pe
         prefix
               firstName Lu
         prefix
               name Lu

但我没有得到任何结果。实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以尝试以下查询:;

{
 "query": {
    "bool": {
       "should": [
          {
            "match_phrase_prefix": {
               "firstName": "Peter"
            }
          },
           {
            "match_phrase_prefix": {
               "firstName": "Lu"
            }
          },
           {
            "match_phrase_prefix": {
               "lastName": "Peter"
            }
          },
           {
            "match_phrase_prefix": {
               "lastName": "Lu"
            }
          }
       ]
    }
  }
 }