【问题标题】:ElasticSearch Bool Query or Finding Exact ValuesElasticSearch Bool 查询或查找确切值
【发布时间】:2014-10-19 21:16:35
【问题描述】:

我对弹性搜索中的Bool QueryFinding Exact Values 有点困惑。具体来说,我有一个要搜索的 title_field 和一个 post_field。但是我使用的所有其他字段是因为我想查找它们是否存在或存在多少次(例如必须准确的 url 或用户名)。

所以我可以从文档中看到我可以在 title_fieldpost_field 上执行 multimatch query

但是我希望得到准确响应的其他字段呢?我要做boolean query(使用必须)吗?还是我需要将所有这些字段重新映射为not_analyzed?还是我需要将它们映射为 not_anayzed firstthen 进行布尔查询?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    确实,您应该将要进行精确匹配的字段映射为 not_analyzed,这意味着它们被视为单个标记,而不是分解为多个标记。

    然后您应该使用术语查询或过滤器来完全匹配令牌。如果您使用过滤器,您也可以使用 and、or 和 not 过滤器(比 bool 更方便)。

    由于映射所有字段有点繁琐,您可以改为使用 dynamic_mapping 将所有字符串字段映射为 not_analyzed,然后简单地为您想要分析的那些字段添加映射:

      "dynamic_templates": [
        {
          "non_analyzed_string": {
            "match": "*",
            "match_mapping_type": "string",
            "mapping": {
              "type": "string",
              "index": "not_analyzed"
            }
          }
        }
      ]
    

    【讨论】:

    • 有道理吉尔斯。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 2016-08-19
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多