在elasticsearch中搜索通配符短语

时间:2020-03-18 17:13:56

标签: java elasticsearch filter kibana elk

我有一个有效的通配符搜索,但它不接受空格。我已经尝试过match_phrase,但它只搜索确切的单词。这是我想要的搜索结果

项目:“项目一示例”,项目二示例”
输入:“说一个”
结果:“计划一个示例”


这是我的工作代码

GET <index_name>/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "*roj*",
            "fields":["field_1", "field_2"]
          }
        }
      ]
    }
  }
} 


更新
我只是意识到我查询字符串的字段是时间戳,这会导致错误。现在我的问题是query_string仅按前缀搜索,它不包括搜索中的下一个前缀。


项目:“项目一示例”,项目二示例”
输入:“说一个”
结果:“项目一示例”,项目二示例”

2 个答案:

答案 0 :(得分:0)

您可以这样搜索:

*ect One

例如:

GET <index_name>/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "*ect One",
            "fields":["field_1", "field_2"]
          }
        }
      ]
    }
  }
}

您可以检查this以获得更多信息。

答案 1 :(得分:0)

最后我找到了解决方案。

query_string的默认运算符为OR,这就是为什么它仅显示第一个前缀的搜索结果的原因。要获取前缀结果,请使用AND运算符

源:query_string