【问题标题】:AND between tokens in elasticsearch与弹性搜索中的标记之间
【发布时间】:2015-12-09 13:44:31
【问题描述】:

当我尝试使用此类查询搜索文档时(使用标准分析器索引的字段):

 "query": {
        "match": {
           "Book": "OG/44"
        }
    }

我有术语“OG”和“44”,结果集将包含可能是这两个术语中的任何一个的结果。当只存在这两个术语时,我应该使用什么分析器/标记器来获得结果?

【问题讨论】:

  • 也许您需要在查询或索引值时转义斜线?
  • 但那将是一个令牌不是吗?
  • 是的。您是否需要有两个令牌并同时查询它们?
  • 这取决于,我不知道我是否会通过转义查询获得类似 'OG/44/13' 的结果。我无法彻底更改客户端代码。

标签: elasticsearch


【解决方案1】:

可以在匹配查询中设置operator(默认为

"query": {
    "match": {
       "Book": {
           "query": "OG/44",
           "operator" : "and"
       }
    }
}

你有两个标记,因为 standard 分析器用斜线标记它们,所以如果你不需要这种行为,你可以转义它

【讨论】:

  • 我可以随时更换分析仪。我想避免在查询中引入新的运算符。有没有办法做到这一点?
  • 如果必须将“OG/44”解析为一个标记,您可以使用whitespaсe分析器按空格标记项目
  • 如果您不想标记字符串,请使用 keyword 分析器
  • 查看我有问题的评论,带有 空格keyword 我将无法找到像“OG/44/13”这样的字段。
  • 据我了解,您想通过查询“OG/44”来查找“OG/44/13”?
猜你喜欢
  • 2021-11-23
  • 2021-06-22
  • 1970-01-01
  • 2020-03-29
  • 2022-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-03
相关资源
最近更新 更多