【问题标题】:user create complex query and search over elasticsearch用户通过 elasticsearch 创建复杂的查询和搜索
【发布时间】:2021-05-30 22:05:14
【问题描述】:

用户是否可以创建复杂的查询并阐明从 ui 搜索和在 elasticsearch 中搜索的条件?我知道弹性搜索中的布尔查询,但我需要实现我的查询,以便每次用户可以为我发送不同的条件,例如 、 != 和 ...

【问题讨论】:

  • 请记住将答案标记为正确,如果我能在其他方面为您提供帮助,请告诉我
  • 当然,但只有几件事,与 sql 查询相比,你知道女巫一个更快,对于复杂的查询,并且知道任何类型的示例来解释我如何实现查询字符串铁路应用程序?
  • elasticsearch 索引为搜索优化的文本而不是执行 %LIKE% quieres,因此速度更快。我的问题是为什么您需要用户编写诸如 > 、
  • 关于 ruby​​ 实现我认为您应该打开一个新问题,提供有关您当前如何连接 ES 和 ruby​​ 的更多信息。
  • 在项目中用户可以搜索它没有特定模式的条件类型,所以我必须使用 sql 查询,但正如我预测的几个月后我的数据库有很多信息,所以使用 sql 查询不是很好主意,所以我决定使用 elk,关于你的问题,它是项目需求的所有者

标签: ruby-on-rails elasticsearch frontend backend


【解决方案1】:

实际上,有两种方法可以从用户输入中接受运算符:

simple_query_string

simple_query_string 查询支持以下运算符:

+ signifies AND operation
| signifies OR operation
- negates a single token
" wraps a number of tokens to signify a phrase for searching
* at the end of a term signifies a prefix query
( and ) signify precedence
~N after a word signifies edit distance (fuzziness)
~N after a phrase signifies slop amount

例子

GET /_search
{
  "query": {
    "simple_query_string" : {
        "query": "\"fried eggs\" +(eggplant | potato) -frittata",
        "fields": ["title^5", "body"],
        "default_operator": "and"
    }
  }
}

查询字符串

query_string 支持更复杂的语法,但不建议在搜索框中使用它,因为任何无效语法都会返回错误。

例子

GET /_search
{
  "query": {
    "query_string": {
      "query": "(new york city) OR (big apple)",
      "default_field": "content"
    }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    相关资源
    最近更新 更多