【问题标题】:Search wild card phrases in elasticsearch在 elasticsearch 中搜索通配符短语
【发布时间】:2020-03-18 17:13:56
【问题描述】:

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

项目:“项目一示例”,项目二示例“
输入:“等一”
结果: “项目一样本”


这是我的工作代码

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


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


项目:“项目一示例”,项目二示例“
输入:“等一”
结果:“项目一样本”,项目二样本“

【问题讨论】:

  • 我也试过match_phrase_prefix,但它只搜索一个单词和后续前缀

标签: java elasticsearch filter kibana elk


【解决方案1】:

你可以这样搜索:

*ect One

例如:

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

您可以查看this了解更多信息。

【讨论】:

  • 用什么?你能解释更多吗?
  • 你的查询应该是这样的,以便在你的例子中得到你想要的。
  • 太模糊了。你只是重复了我现有的代码。你看我已经在查询中使用了通配符
  • 是的正确,但它只搜索每个前缀,而不是字符串的整个前缀。
【解决方案2】:

我终于找到了解决方案。

query_string 的默认操作符是OR,所以它只显示第一个前缀的搜索结果。要获取前缀的结果,请使用 AND 运算符

来源:query_string

【讨论】:

    猜你喜欢
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    相关资源
    最近更新 更多