Elastic Search 1.7-像SQL一样的完全喜欢的搜索

时间:2019-06-27 07:28:59

标签: elasticsearch

我使用的是旧版的弹性搜索,我找不到一种方法来允许像sql这样的完全搜索:'%%'

我必须搜索一个未知的数据,所以“列”是未知的。

例如 我有此列作为示例行:

source,dest,message
eth0, eth1, DELIVERY 3015801: SUCCESS: DID

在搜索表单中,用户编写如下内容:

+message:"delivery"
or
+message:"delivery" and +source:"eht0"

该行成功返回。 不幸的是,如果他们写:

+message:"success"

由于“:”不返回任何行

我需要允许用户编写如下内容:

+message:"success*"

这是提交的查询。我有时间范围过滤器,然后有查询:

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "range": {
                "@timestamp": {
                  "from": 1561615860000,
                  "to": 1561619519000
                }
              }
            }
          ]
        }
      },
      "query": {
        "bool": {
          "should": [
            {
              "query_string": {
                "query": "+message:\"success\""
              }
            }
          ]
        }
      }
    }
  },
  "sort": [
    {
      "@timestamp": {
        "order": "desc"
      }
    }
  ]
}

有没有一种方法可以将我的文本搜索转换为sql

message like 'success%'

谢谢。

1 个答案:

答案 0 :(得分:0)

是已分析或未分析的字段吗?也许prefix query是您想要的。

但通常:

  • 此版本已不复存在。请升级。
  • 这不是关系数据库。如果您尝试翻译1:1的概念,您将无法获得最大的收益。文档或课程将帮助您进入正确的搜索范围,而远离LIKE搜索。