【问题标题】:search in fields containing apostrophe does not return results elasticsearch在包含撇号的字段中搜索不会返回结果 elasticsearch
【发布时间】:2023-03-10 19:44:01
【问题描述】:

我在包含撇号的字段上进行的搜索,elasticsearch 未返回结果。 字段示例:Objet de l'opération de crédit 这是我的查询:

{
    "size": 100,
    "query": {
        "bool": {
            "must": [{
                    "match_phrase": {
                        "Objet de l'opération de crédit": {
                            "query": "SMD : Investissement locatif",
                            "slop": 0,
                            "zero_terms_query": "NONE",
                            "boost": 1.0
                        }
                    }
                }
            ],
            "adjust_pure_negative": true,
            "boost": 1.0
        }
    }
}

此查询不返回结果,仅针对带撇号的字段 请帮助我是弹性搜索的新手

【问题讨论】:

    标签: java elasticsearch elasticsearch-7


    【解决方案1】:

    TL;DR:问题不在于字段名称上的撇号,而在于字段名称末尾的空格。

    Elasticsearch 不会对查询中的拼写错误字段不存在发出警告,只会不返回任何结果。

    旧答案

    如果您添加要与该查询一起返回的示例文档会很有帮助,因为在测试文档中使用相同的值实际上您发布的查询会返回结果。

    如果没有这些信息,我可以猜测找不到该文档,因为您使用的是“match_phrase”,这意味着将整个内容作为一个短语进行匹配,而 slop 0 意味着您不允许介于两者之间的单词或不同的单词顺序。

    我建议先尝试不那么严格的查询。

    POST test_alma/_search
    {
      "query": {
        "match": {
          "Objet de l'opération de crédit": "SMD : Investissement locatif"
        }
      }
    }
    

    提取文档

    POST test_alma/_doc
    {
       "Objet de l'opération de crédit": "SMD : Investissement locatif"
    }
    

    您的查询

    POST test_alma/_search
    {
      "size": 100,
      "query": {
        "bool": {
          "must": [
            {
              "match_phrase": {
                "Objet de l'opération de crédit": {
                  "query": "SMD : Investissement locatif",
                  "slop": 0,
                  "zero_terms_query": "NONE",
                  "boost": 1
                }
              }
            }
          ],
          "adjust_pure_negative": true,
          "boost": 1
        }
      }
    }
    

    回应

    {
      "took" : 0,
      "timed_out" : false,
      "_shards" : {
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
        "total" : {
          "value" : 1,
          "relation" : "eq"
        },
        "max_score" : 0.8630463,
        "hits" : [
          {
            "_index" : "test_alma",
            "_type" : "_doc",
            "_id" : "asod-ncBRP0FeAG5QeOY",
            "_score" : 0.8630463,
            "_source" : {
              "Objet de l'opération de crédit" : "SMD : Investissement locatif"
            }
          }
        ]
      }
    }
    
    

    【讨论】:

    • 我尝试了匹配查询,我在答案中添加了更多详细信息,请您看一下吗?
    • 请尝试在查询中的字段名称末尾添加一个空格。对我来说,成功了
    猜你喜欢
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多