【问题标题】:Query DSL regexp pattern doesn't work with some strings查询 DSL 正则表达式模式不适用于某些字符串
【发布时间】:2021-09-02 00:33:20
【问题描述】:
我有一个模式“.TP-V.”,它返回类似“SSTP-VPN”的字符串。但是模式“.SSH.”没有返回任何东西,尽管有像“core:Login:SSH:Cisco”这样的行。我不知道需要什么模式。
【问题讨论】:
标签:
elasticsearch
elasticsearch-dsl
【解决方案1】:
您需要使用".*SSH.*" 而不是".SSH."。
添加一个工作示例 -
索引数据:
{
"name":"core:Login:SSH:Cisco"
}
{
"name":"SSTP-VPN"
}
搜索查询:
{
"query": {
"regexp": {
"name.keyword": {
"value": ".*SSH.*"
}
}
}
}
搜索结果:
"hits": [
{
"_index": "68015371",
"_type": "_doc",
"_id": "2",
"_score": 1.0,
"_source": {
"name": "core:Login:SSH:Cisco"
}
}
]
搜索查询:
{
"query": {
"regexp": {
"name.keyword": {
"value": ".*TP-V.*"
}
}
}
}