Elasticsearch 简单查询字符串查询与精确文本搜索

标签 elasticsearch

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

文档

  • 备注
  • 描述
  • 标题

我想使用像谷歌这样的搜索进行搜索,例如

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

当我使用“blue car”时,它必须是精确的值匹配,根本不需要任何分析。它必须只找到准确的短语,而无需词干等。

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

{
  "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 查询将它们组合在一起吗?

最佳答案

以下是使用 bool 查询 查询“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"
                    ]
                }
            }
        }
    }
}

关于Elasticsearch 简单查询字符串查询与精确文本搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28046771/

相关文章:

elasticsearch - 将不同文档的字段合并到同一个索引中

elasticsearch - Elasticsearch:同一领域具有多种语言的文档的映射?

elasticsearch - Celery具有Elasticsearch结果后端AuthenticationException

elasticsearch - 想要从Elasticsearch中的当前数据中提取天数和日期时间

Docker启动sonarqube :7. 5-community fails with es log permission

elasticsearch - 如何将摄取管道与Logstash Elasticsearch输出更新功能一起使用

Elasticsearch Kibana 日志记录

elasticsearch - Spring Data Elasticsearch 的@Field 注释不起作用

lucene - Elasticsearch 查询通过通配符过滤出ID

scala - 嵌入式ES实例在运​​行单元测试时失败