Elastisearch搜索多个字段

时间:2018-07-13 17:13:21

标签: elasticsearch search indexing field

由于我只是elastisearch的新人,所以我想向您寻求帮助或有关搜索要求的任何建议。这是我的弹性搜索索引详细信息:

_index               _type         _score     subs_name     subs_type
substation index     substation    1          Ad Diraz      loop 33
substation index     substation    1          Al Bareh      city 66 
substation index     substation    1          Budaiya       loop 33
substation index     substation    1          Galali        city 66

现在,我想搜索subs_name和sub_type之间的任何单词:

  1. 如果我搜索 diraz循环,它将为我提供 Ad Diraz,第33循环
  2. 的搜索结果
  3. 如果我搜索 loop diraz ,它将为我提供 Ad Diraz,循环33
  4. 的搜索结果
  5. 如果我搜索 bareh 66 ,它将为我提供 66城市Al Bareh
  6. 如果我搜索 Galali ,它将为我提供 Galali,66号城市的搜索结果 最后
  7. 如果我搜索 Budaiya循环,它将给出 Budaiya,第33循环
  8. 的搜索结果

我尝试了下面的elastisearch查询,但这仅对搜索否有好处。 4

{"from": 0, "size": max_result,
    "query": {
    "multi_match": {
          "fields": ['subs_name', 'subs_type'],
          "query": search_this_query,
           "type": "phrase_prefix"
                   }
             }
}

对于使用哪种Elasticsearch查询的任何帮助将不胜感激。预先感谢!

1 个答案:

答案 0 :(得分:0)

如果您的两个字段的类型均为字符串/文本,并且使用相同的分析器,则应在此查询中使用cross_fields类型

GET /_search
{
  "query": {
    "multi_match" : {
      "query":      "diraz loop",
      "type":       "cross_fields",
      "fields":     [ "subs_name","subs_type"]
     "operator":   "and"
    }
  }
}