当前位置: 首页 > 面试题库 >

elasticsearch:词条查询失败

周浩淼
2023-03-14
问题内容

我有一些文档的映射,并且查询agains条件确实失败。我不明白为什么:

"mappings":{
     "timeslot":{
            "properties":{
                 "FOB_IN":{
                        "type":"long"
                 },
                 "TRIGGER_CODE":{
                        "type":"long"
                 },
                 "FLIGHT_PHASE":{
                        "type":"long"
                 },
                 "REP16_TRIG":{
                        "type":"long"
                 },
                 "fwot":{
                        "type":"string"
                 },
                 "FOB_OUT":{
                        "type":"long"
                 },
                 "FP":{
                        "type":"long"
                 },
                 "FLTNB":{
                        "type":"string"
                 },
                 "Date":{
                        "format":"strict_date_optional_time||epoch_millis",
                        "type":"date"
                 }
            }
     }
}

TRIGGER_CODE例如,我可以对进行词条查询,效果很好

{
   "took": 1,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "failed": 0
   },
   "hits": {
      "total": 5,
      "max_score": 4.4446826,
      "hits": [
         {
            "_index": "merged-2016-04",
            "_type": "timeslot",
            "_id": "AVRS8VnirVLwfvMnwpXb",
            "_score": 4.4446826,
            "_source": {
               "Date": "2016-04-03T08:42:44+0000",
               "FLIGHT_PHASE": 20,
               "TRIGGER_CODE": 4000,
               "fwot": "A6-APA"
            }
         }
      ]
   }
}

现在 对fwot同样失败 。怎么了?

GET merged-2016-04/_search?size=1
{
    "query" : {
        "term" : { "fwot": "A6-APA"}
    }
}

{
   "took": 1,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "failed": 0
   },
   "hits": {
      "total": 0,
      "max_score": null,
      "hits": []
   }
}

问题答案:

您需要为此"index": "not_analyzed"工作。并且您需要为数据重新索引以使上述更改生效。

这是映射更改和一些测试数据的命令的完整列表:

PUT /merged-2016-04
{
  "mappings": {
    "timeslot": {
      "properties": {
        "FOB_IN": {
          "type": "long"
        },
        "TRIGGER_CODE": {
          "type": "long"
        },
        "FLIGHT_PHASE": {
          "type": "long"
        },
        "REP16_TRIG": {
          "type": "long"
        },
        "fwot": {
          "type": "string",
          "index": "not_analyzed"
        },
        "FOB_OUT": {
          "type": "long"
        },
        "FP": {
          "type": "long"
        },
        "FLTNB": {
          "type": "string"
        },
        "Date": {
          "format": "strict_date_optional_time||epoch_millis",
          "type": "date"
        }
      }
    }
  }
}

POST /merged-2016-04/timeslot
{
  "Date": "2016-04-03T08:42:44+0000",
  "FLIGHT_PHASE": 20,
  "TRIGGER_CODE": 4000,
  "fwot": "A6-APA"
}

GET merged-2016-04/_search?size=1
{
  "query": {
    "term": {
      "fwot": "A6-APA"
    }
  }
}


 类似资料:
  • 问题内容: 这是我的架构 我做了这样的一个NEST查询: 并返回零元素! 如果我查看数据库(使用邮递员),则可以看到我的文档: 问题答案: 听起来您可能没有在为文档建立索引 之前 将类型的映射显式地放入索引中,所以Elasticsearch已基于所看到文档中字段的默认映射来推断该映射。例如,给定以下类型 如果我们按以下方式索引一些文档 在控制台中输出以下内容 我们没有匹配的文件。在Elastics

  • 问题内容: 在Google上搜索后,我发现Elasticsearch的最大查询条件限制为1024? 它是可配置的吗?如果可以,请提供任何步骤。 谢谢,Sameer 问题答案: 默认值为1024,但是它是可配置的。在elasticsearch配置文件(例如yml文件)中,设置提及的设置:例如。

  • 问题内容: 我有下面的代码,我在布尔查询中做多个必须的。在这里,我将在字段“地址”中传递必填项查询。现在,该IP地址将以其他api的列表的形式出现在我的面前,我必须将列表中的所有IP作为必填项查询传递给我。在这里,我没有办法创建QueryBuilder时如何动态传递地址值。 请提出建议。 问题答案: 您可以使用条件查询为单个字段传递多个值。创建一个字符串数组或集合。并将其传递给条款查询。 希望能帮

  • 我试图获取缺少字段“topic.description”和匹配项“fundedunder.programme”:“abc”的文档。 映射: 我的查询如下所示:

  • 问题内容: 我是ES的新手,我正在尝试建立一个查询,该查询将对多个字段使用phrase_prefix,因此我不必进行多次搜索。 这是到目前为止我得到的: 有人知道如何搜索多个字段,例如“ last_name”吗? 问题答案: 您正在使用的文本查询已被弃用(有效重命名),而改为使用match query 。匹配查询支持单个字段,但是您可以使用multi_match查询,该查询支持完全相同的选项并允许

  • 问题内容: 根据Elasticsearch clear cache docs ,您可以清除字段的缓存,但是是否可以为单个查询词清除缓存? 为了防止将来出现此问题,我宁愿不要对“空”查询进行缓存,或者不经常更新缓存。是否可以在该粒度级别上为缓存设置规则? 问题答案: 不可以,您不能指定该级别的粒度。 您可以覆盖是针对默认启用缓存过滤器:http://www.elasticsearch.org/gui