match_phrase查询在一个查询中运行多个

时间:2019-12-11 11:32:04

标签: elasticsearch

我正在尝试使用来自我的松紧带的查询来获取一些与“ ListExperiences.Title”相匹配的细节

{
   "size": 100,
   "query": {
       "match_phrase": {
                "ListExperiences.Title": "technical specialist"
            }
   },
   "_source":["skillstop"]
}

我能够成功执行,并且得到了所需的结果。

{...
 "hits":[{
    ...
    "_source":{"skillstop": "government, active directory"
     } }       
 ]}

点击的长度= 1,因为我只查询了一次。 但是,如果我要竞选“支持专家”,“技术专家”,“技术专家”,“需要客户服务的客户”这五个称号,我就必须运行Elasticsearch 5次。

有什么办法可以一次全部运行吗? (预计我会获得5次点击)

我尝试过

{
 "size": 100,
 "query": {
    "dis_max":{
        "queries":[
            {"match_phrase": {
                "ListExperiences.Title": "technical specialist"} },
            {"match_phrase": {
                "ListExperiences.Title": "technical expert"} }
        ]
    }
}
}

它只返回“技术专家”或最后一个。

1 个答案:

答案 0 :(得分:1)

这取决于。如果要启动或查询,则应尝试:

{
  "query" : {
    "bool" : {
      "should": [{
        "match_phrase": {
          "ListExperiences.Title": "technical specialist"
        }
      }, {
        "match_phrase": {
          "ListExperiences.Title": "technical expert"
        }
      }]
    }
  }
}

如果您只想通过一个POST请求进行多个查询,则应使用multi_search-文档here

GET <your_index_name>/_msearch
{"query" : {"match_phrase" : {"ListExperiences.Title": "technical specialist"}}}
{"query" : {"match_phrase" : {"ListExperiences.Title": "technical expert"}}}