弹性搜索:术语查询失败 [英] elasticsearch: term query fails

查看:157
本文介绍了弹性搜索:术语查询失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些文档的映射和重新查询条款确实失败。我不明白为什么:

I have a mapping for some documents and queries agains terms does fail. I don't understand why:

"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 进行术语查询,例如,它的工作正常

I can make a term query against TRIGGER_CODE, for example, and it works fine

{
   "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确实失败即可。什么问题?

now the same against fwot does fail. What's wrong?

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": []
   }
}


推荐答案

你需要fwot是index:not_analyzed。您需要重新编号数据才能使上述更改生效。

You need fwot to be "index": "not_analyzed" for that to work. And you need to reindex the data for the above change to work.

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

Here's the complete list of commands for the mapping change and some test data:

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"
    }
  }
}

这篇关于弹性搜索:术语查询失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆