gpt4 book ai didi

elasticsearch - 术语弹性查询找不到字母数字关键字文本的匹配项

转载 作者:行者123 更新时间:2023-12-02 23:57:48 25 4
gpt4 key购买 nike

在以下情况下,我将如何使用一个或多个术语 flex 查询?

  • 字段paidagentnumber的映射集如下
    "paidagentnumber": {
    "type": "text",
    "fields": {
    "keyword": {
    "type": "keyword",
    "ignore_above": 256
    }
    }
    }
  • GET statements_full/statements/_search?q=paidagentnumber:"017M0"在系统
  • 中找到80条记录
  • 但是以下GET没有得到任何记录

    GET statement_full / statements / _search
    {
    “查询”:{
    “term”:{“paidagentnumber”:“017M0”}
    }
    }
  • 但是

    GET statement_full / statements / _search
    {
    “查询”:{
    “term”:{“paidagentnumber”:“21212”}
    }
    }

    正在查找匹配结果,即如果paidagentnumber字段中没有字母(只是数字),则term查询正在查找匹配项。
  • 最佳答案

    分析了paidagentnumber字段(因为它是"type": "text"),因此它的内容将由分析器小写。不分析术语查询,而是使用according to the docs来查找“倒排索引中指定的精确术语”,因此,该小写分析不会应用于查询,因此两者之间不匹配。 “017M0”与“017m0”不完全匹配。

    您可以在这里选择:

  • 使用query_string query。这与q参数创建的查询类型相同,因此,如果您要运行该查询,请使用该查询:
    "query": { 
    "query_string" : {
    "query": "paidagentnumber:017M0"
    }
    }
  • 如果要使用术语查询,请使用关键字字段。您已经在此处创建了一个,因此只需搜索paidagentnumber.keyword字段即可。
    "query": { 
    "term" : {
    "paidagentnumber.keyword": "017M0"
    }
    }

    如果您真的不想在一开始就在paidagentnumber字段上进行任何形式的文本分析,则可以从其定义中消除text类型:
    "paidagentnumber": {
    "type": "keyword",
    "ignore_above": 256
    }
  • 关于elasticsearch - 术语弹性查询找不到字母数字关键字文本的匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51866877/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com