【问题标题】:elastic search matching issue弹性搜索匹配问题
【发布时间】:2016-01-28 05:57:32
【问题描述】:

我在进行弹性搜索查询时遇到了查找结果的问题。我已经验证索引具有搜索元素。

这是我的查询。这个想法是在 LOGIN、FIRST_NAME 和 LAST_NAME 字段中查找全部或部分具有“ale”的所有元素。我没有任何具有名字或姓氏的条目或使用确切的术语“ale”登录。但是,我确实有索引条目,其中包含名字或姓氏的一部分或登录为“ale”。

我认为我做错了什么,但我不确定如何才能做到这一点。

请指教。

SEARCH: {
  "query" : {
    "query_string" : {
      "query" : "ale",
      "fields" : [ "FIRST_NAME^10.0", "LAST_NAME^10.0", "LOGIN^10.0"]
    }
  },
  "_source" : {
    "includes" : [ "FIRST_NAME", "LAST_NAME", "LOGIN"],
   }
}

【问题讨论】:

  • 它应该是“ale*”。 query_string 中的通配符搜索

标签: elasticsearch pattern-matching match


【解决方案1】:
{
"query" : {
"query_string" : {
  "query" : "*ale*",
  "fields" : [ "FIRST_NAME^10.0", "LAST_NAME^10.0", "LOGIN^10.0"]
  }
},
"_source" : {
"includes" : [ "FIRST_NAME", "LAST_NAME", "LOGIN"],
 }
}

这将作为sql 中的like 运算符工作,这正是您想要的。

【讨论】:

  • 非常感谢您的帮助,非常感谢您。它对我有用。
  • 您好,我对这个问题还有一个问题。当输入中存在特殊字符时,搜索将失败。例如,如果我的输入是“查询”:“(McO”,由于输入字符串中的左括号,我得到一个异常。异常类似于 org.elasticsearch.action.search.SearchPhaseExecutionException 期待以下之一: ... ... ... "+" ... "-" ...
  • 您需要先转义特殊字符,然后再将其传递给查询字符串,如 \\McO
猜你喜欢
  • 2019-02-01
  • 2021-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-06
相关资源
最近更新 更多