【问题标题】:Elasticsearch | Match multiple phrases弹性搜索 |匹配多个短语
【发布时间】:2014-06-08 07:33:22
【问题描述】:

我正在尝试创建一个查询,该查询将查找所有包含#breakbad 或“break bad”的状态

这是我到目前为止所拥有的,但根据感觉它显然是错误的:

{
   "query": {

      "match": {

         "_all": {

            "query": "breaking bad",
            "type": "phrase"
         }
      },
      "match": {
         "_all": {
             "query": "#breakingbad",
             "type": "phrase"
      }
   }
}

【问题讨论】:

  • 您是否尝试过将匹配查询嵌入到布尔查询中?

标签: elasticsearch match dsl querydsl


【解决方案1】:

回答:

{
    "query": {
        "bool": {
            "should": [
                {
                    "match": {
                        "message": {
                            "query": "breaking bad",
                            "type": "phrase"
                        }
                    }
                },
                {
                    "match": {
                        "message": "#poznasty"
                    }
                }
            ]
        }
    }
}

【讨论】:

    【解决方案2】:

    为什么不使用 multi_match

    {
        "query" : {
            "multi_match" : {
                "fields" : ["name", "description"],
                "query" : "breaking bad",
                "type" : "phrase_prefix"
            }
        }
    }
    
    MultiMatchQueryBuilder builder = QueryBuilders.multiMatchQuery(query,
        "name", "description").type(MatchQueryBuilder.Type.PHRASE_PREFIX);
    

    【讨论】:

    • 据我所知,mutli_match 将在多个字段中查找。而问题的作者所要求的是在单个字段中查找多个可能的短语 (OR)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 2021-08-06
    • 2016-08-05
    • 1970-01-01
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多