在elasticsearch中搜索多个字段作为正则表达式查询

Posted

技术标签:

【中文标题】在elasticsearch中搜索多个字段作为正则表达式查询【英文标题】:search multiple field as regexp query in elasticsearch 【发布时间】:2022-01-23 00:16:29 【问题描述】:

我正在尝试按标题和描述等不同字段进行搜索。当我输入关键字时,如果描述或标题包含我输入的关键字,elasticseach 必须找到一些东西。这是我的目标。我怎样才能达到我的目标?

您可以看到我用于一个字段的示例代码。

  query: 
          regexp: 
            title: `.*$q.*`,
          ,
        ,

我也试过下面的一个,但它给出了语法错误。

  query: 
          regexp: 
            title: `.*$q.*`,
          ,
          regexp: 
            description: `.*$q.*`,
          ,
        ,

【问题讨论】:

【参考方案1】:

为此,您需要使用bool 查询。

GET /<you index>/_search

  "query": 
    "bool": 
      "should": [
        
          "regexp": 
            "title": ".*$q.*"
          
        ,
        
          "regexp": 
            "description": ".*$q.*"
          
        
      ]
    
  

您可以找到文档 => [doc]

【讨论】:

以上是关于在elasticsearch中搜索多个字段作为正则表达式查询的主要内容,如果未能解决你的问题,请参考以下文章

Spring-data-elasticsearch搜索多个索引中的特定字段

Elasticsearch 多字段搜索

ElasticSearch安装和使用

ElasticSearch 学习笔记一 简介

Elasticsearch 聚合功能

Doctrine MongoDB ODM 在两个或多个字段中搜索