当前位置: 首页 > 知识库问答 >
问题:

正则表达式与弹性搜索

范翰池
2023-03-14
GET apple/company/_search
{
  "query": {
    "prefix": {
      "name": "a"
    }
  },
  "fields": [
    "id",
    "name",
    "websiteUrl"
  ],
  "size": 100
}
GET apple/company/_search
{
  "query": {
    "regexp": {
      "name": "^[\S]a*"
    }
  },
  "fields": [
    "id",
    "name",
    "websiteUrl"
  ],
  "size": 100
}

共有1个答案

巢靖
2023-03-14

在Elasticsearch中进行搜索既是关于查询本身,也是关于数据的建模,以便它最适合要使用的查询。人们不能简单地索引任何东西,然后努力想出一个执行某些操作的查询。

查询的Elasticsearch方式是为该字段提供以下映射:

PUT /apple
{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "keyword_lowercase": {
            "type": "custom",
            "tokenizer": "keyword",
            "filter": [
              "lowercase"
            ]
          }
        }
      }
    }
  },
  "mappings": {
    "company": {
      "properties": {
        "name": {
          "type": "string",
          "fields": {
            "analyzed_lowercase": {
              "type": "string",
              "analyzer": "keyword_lowercase"
            }
          }
        }
      }
    }
  }
}

并使用此查询:

GET /apple/company/_search
{
  "query": {
    "prefix": {
      "name.analyzed_lowercase": {
        "value": "a"
      }
    }
  }
}
GET /apple/company/_search
{
  "query": {
    "query_string": {
      "query": "name.analyzed_lowercase:A*"
    }
  }
}
 类似资料:
  • 问题内容: 我需要找到与特定正则表达式匹配的所有软件包: 基本上,包的名字应该与启动,并有后话。例如,以下软件包应匹配: 我可以做,但是有很多我不感兴趣的软件包。 是否提供通过正则表达式查找软件包的方法?或者,我应该只是通过管道传递结果来过滤掉无关的包? 此外,可能是一个的“交集” ,并有助于太。 问题答案: alecxe,我相信这是您要寻找的一线客。 如下面评论中铬酸盐所建议的那样,您可以根据需

  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 问题内容: 我需要在给定正则表达式的字符串中找到所有匹配项。我一直在这样做,直到遇到一个案例,它没有达到我的预期。例如: 在这种情况下,返回我需要的内容(最长的匹配项),但是行为却有所不同,尽管文档暗示它应该是相同的: 匹配所有出现的模式,而不仅仅是第一个。 为什么行为不同? 如何获得with (或其他方式)的结果? 问题答案: 好的,我从文档中查看发生了什么…… 如果该模式中存在一个或多个组,则

  • 我有一根线,比如: 如何匹配每行的最后一个?顺便说一句,这是我试图在Sublime的文本中做到的。这些值不一致,就像我在这里看到的,我有几百行要替换。 我尝试了,但这与相匹配。

  • 使用 PCRE(preg_*)家族函数 PHP有两种使用不同的方式来使用正则表达式:PCRE(Perl兼容表示法,preg*)函数 和 POSIX(POSIX 扩展表示法,ereg*) 函数。 每个函数家族各自使用一种风格稍微不同的正则表达式。幸运的是,POSIX 家族函数从 PHP 5.3.0 开始就被弃用了。因此,你绝不应该使用 POSIX 家族函数编写新的代码。 始终使用 PRCE 家族函数

  • 昨天,我需要向正则表达式添加一个文件路径,创建一个如下所示的模式: 一开始正则表达式不匹配,因为包含几个正则表达式特定的符号,如 或 。作为快速修复,我将它们替换为 和 . 与 . 然而,我问自己,是否没有一种更可靠或更好的方法来清除正则表达式特定符号中的字符串。 Python 标准库中是否支持此类功能? 如果没有,您是否知道一个正则表达式来识别所有正则表达式并通过替代品清理它们?