【问题标题】:Exactly Position on String Search Elasticsearch字符串搜索 Elasticsearch 中的确切位置
【发布时间】:2020-04-01 16:01:36
【问题描述】:

我需要准确地找到我搜索的内容。 假设我们有 3 个文档,其中包含单个字段 (user.created_at),内容如下:

Wed Mar 04 09:14:25 +0000 2020
Wed Mar 25 12:14:25 +0000 2020
Wed Mar 25 06:14:25 +0000 2020

那么我在 RAW 中的查询是

 {
    "query": {
        "bool": {
            "must": [
                {
                    "wildcard": {
                        "user.created_at.keyword": "*2020"
                    }
                },
                {
                    "match": {
                        "user.created_at": "Wed Mar 25"
                    }
                },
                {
                    "match": {
                        "user.created_at": "Wed Mar"
                    }
                },
                {
                    "match": {
                        "user.created_at": "Mar 25"
                    }
                },
                {
                    "match": {
                        "user.created_at": "Wed"
                    }
                },
                {
                    "match": {
                        "user.created_at": "Mar"
                    }
                },
                {
                    "match": {
                        "user.created_at": "25"
                    }
                }
            ]
        }
    }
}

我只想搜索 3 月 25 日星期三,我得到的结果可能会一直显示包含 2020 年 3 月 4 日星期三 09:14:25 +0000强>:

Wed Mar 25 12:14:25 +0000 2020
Wed Mar 25 06:14:25 +0000 2020
Wed Mar 04 09:14:25 +0000 2020

无论如何,字段类型是String,我不知道将映射类型更新为最新。像

这样的错误
{
 error: {
  root_cause: [
   {
    type: "resource_already_exists_exception",
    reason: "index [final/KyzdFVn4RnCicyphDFBW-w] already exists",
    index_uuid: "KyzdFVn4RnCicyphDFBW-w",
    index: "final"
   }
  ],
  type: "resource_already_exists_exception",
  reason: "index [final/KyzdFVn4RnCicyphDFBW-w] already exists",
  index_uuid: "KyzdFVn4RnCicyphDFBW-w",
  index: "final"
 },
 status: 400
}

我完全不知道。请帮帮我!

【问题讨论】:

    标签: elasticsearch elasticsearch-query


    【解决方案1】:

    您可以使用斜率为 0 的 match_phrase query。此特定查询将确保按顺序找到所有术语。

    {
      "query": {
        "bool": {
          "must": [
            {
              "wildcard": {
                "user.created_at.keyword": "*2020"
              }
            },
            {
              "match_phrase": {
                "user.created_at": {
                  "slop": 0,
                  "query": "Wed Mar 25"
                }
              }
            }
          ]
        }
      }
    }
    

    它不会处理所有情况,但在搜索“Wed Mar 25”时,您只会得到

    Wed Mar 25 12:14:25 +0000 2020
    Wed Mar 25 06:14:25 +0000 2020
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-10
      • 2023-03-13
      • 1970-01-01
      • 2020-02-01
      • 2020-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多