elasticsearch Elastic search 8.7默认字段搜索未按预期工作

cczfrluj  于 2023-06-29  发布在  ElasticSearch
关注(0)|答案(1)|浏览(130)

我面临着一个问题,与默认字段搜索ElasticSearch版本8.7
考虑使用索引名称客户和以下数据字段进行ElasticSearch

{
    "customer_name":"ABC Manufacturers",
    "vendor_name":"XZY Manufacturers",
    "status":"Active",
    "address":""
}

Map:

{
  "mappings": {
    "properties": {
      "customer_name": {
        "type": "text",
        "analyzer": "string_analyzer"
      },
      "status": {
        "type": "text",
        "analyzer": "string_analyzer"
      },
      "vendor_name": {
        "type": "text",
        "analyzer": "string_analyzer"
      },
      ...
    }
  }
}

设置:

{
  "settings": {
    "index": {
      "max_ngram_diff": "15",
      "routing": {
        "allocation": {
          "include": {
            "_tier_preference": "data_content"
          }
        }
      },
      "number_of_shards": "1",
      "analysis": {
        "filter": {
          "ngram_filter": {
            "type": "edge_ngram",
            "min_gram": "2",
            "max_gram": "15"
          }
        },
        "analyzer": {
          "string_analyzer": {
            "filter": [
              "lowercase",
              "ngram_filter"
            ],
            "fuzziness": "AUTO",
            "type": "custom",
            "tokenizer": "standard"
          },
          "ngram_analyzer": {
            "filter": [
              "lowercase",
              "ngram_filter"
            ],
            "type": "custom",
            "tokenizer": "ngram_tokenizer"
          }
        },
        "tokenizer": {
          "ngram_tokenizer": {
            "type": "ngram",
            "min_gram": "3",
            "max_gram": "15"
          }
        }
      }
    }
  },
  "defaults": {
    "index": {
      "lifecycle": {
        "name": "",
        "parse_origination_date": "false",
        "step": {
          "wait_time_threshold": "12h"
        },
        "indexing_complete": "false",
        "rollover_alias": "",
        "origination_date": "-1"
      },
      "mode": "standard",
      "routing_partition_size": "1",
      "mapping": {
        "coerce": "false",
        "nested_fields": {
          "limit": "50"
        },
        "depth": {
          "limit": "20"
        },
        "field_name_length": {
          "limit": "9223372036854775807"
        },
        "total_fields": {
          "limit": "1000"
        },
        "nested_objects": {
          "limit": "10000"
        },
        "ignore_malformed": "false",
        "dimension_fields": {
          "limit": "16"
        }
      },
      "max_script_fields": "32",
      "query": {
        "default_field": [
          "*"
        ],
        "parse": {
          "allow_unmapped_fields": "true"
        }
      },
      "auto_expand_replicas": "false",
      "recovery": {
        "type": ""
      },
      "fielddata": {
        "cache": "node"
      },
      "queries": {
        "cache": {
          "enabled": "true"
        }
      },
      "query_string": {
        "lenient": "false"
      }
    }
  }
}

早些时候,我在8.2版本中,下面的查询工作正常,因为它搜索所有默认字段,默认情况下是 *。但升级到8.7后,我无法使用相同的查询得到结果。
看起来这个查询只从vendor_name获取结果,可能是它将vendor_name视为默认值,但在设置中我仍然可以看到默认字段为 *。8.7升级是否有任何弃用或行为变化。需要帮助,如果任何人都面临着类似的问题。
此外,如果我将字段(字段:[“customer_name”])传递给下面的查询,我将获得8.7的预期数据,但如果我将字段传递为[“customer_name”,“vendor_name”],我将不会从customer_name获得任何匹配项。

GET customers/_search
{
  "query": {
    "query_string": {
      "query": "ABC",
      "default_operator": "AND"
    }
  }
}
mccptt67

mccptt671#

在Elastic团队进行调试和跟进之后,我们知道这是Elastic 8.7版本中的一个已知问题/错误。
升级到8.8.x可以帮助我们获得此修复。

相关问题