【问题标题】:Elasticsearch simple query string query vs exact text searchElasticsearch 简单查询字符串查询 vs 精确文本搜索
【发布时间】:2017-01-28 06:08:00
【问题描述】:

我有一个包含多个字段的文档。

文档

  • 备注
  • 说明
  • 标题

我想使用类似 google 的搜索进行搜索,例如

  • “蓝色汽车”-柴油+汽油
  • “蓝色汽车”+混合动力
  • “蓝车”橙
  • 蓝车橙

当我使用“蓝色汽车”时,它必须是完全匹配的值,根本没有任何分析。它只能找到没有词干等的确切短语。

为此,我得到了一个这样的工作版本 ->

{
  "query": {
    "multi_match": {
      "query": "blue car",
      "fields": [
        "text",
        "message",
        "whatever"
      ],
      "type": "phrase"
    }
  }
}

虽然对于其他类型的搜索,如 -diesel 或 +hybrid。我正在考虑使用 as 似乎支持得很好。

{
   "query": {
        "simple_query_string": {
           "fields": [
            "text",
            "message",
            "whatever"],
           "default_operator": "and",
           "query": "-diesel +hybrid"
        }
     }
}

不幸的是,即使我在查询中将文本放在引号中,简单的查询字符串查询也会使用分析器。

你们知道我如何将两者结合起来吗?我可以使用 bool 查询将它们组合在一起吗?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    这是一个使用bool query查询“blue car”-diesel +hybrid'的示例

    {
        "query": {
            "bool": {
                "must": [
                    {
                        "multi_match": {
                            "query": "blue car",
                            "fields": [
                                "text",
                                "message",
                                "whatever"
                            ],
                            "type": "phrase"
                        }
                    },
                    {
                        "multi_match": {
                            "query": "hybrid",
                            "fields": [
                                "text",
                                "message",
                                "whatever"
                            ]
                        }
                    }
                ],
                "must_not": {
                    "multi_match": {
                        "query": "diesel",
                        "fields": [
                            "text",
                            "message",
                            "whatever"
                        ]
                    }
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-09
      • 2016-03-14
      • 2021-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-07
      • 2020-02-24
      • 1970-01-01
      相关资源
      最近更新 更多