【发布时间】:2018-01-28 01:32:48
【问题描述】:
我将一些任意数据放入 elasticsearch(日志)。写入正常,大多数查询都能正常工作,但我有一个永远不匹配的“reqId”字段。
$ curl localhost:9200/log_general/log/c9811a1a-6710-424a-b67d-d02d6ad75c89 | jq .
{
"_index": "log_general",
"_type": "log",
"_id": "c9811a1a-6710-424a-b67d-d02d6ad75c89",
"_version": 1,
"found": true,
"_source": {
"body": {
"body": {
"media": [],
"parentId": "5a695c7bda3c26391649e332",
"text": "Super bulk comment 25"
},
"method": "post",
"url": "/addComment",
"xuserid": "5a695c30da3c26391649e17f"
},
"logType": "request_start",
"reqId": "5T42Q1AUmd9LS1E8Q",
"reqUrl": "/addComment"
}
}
我可以尝试通过 reqId
搜索curl -XPOST localhost:9200/_search -H 'content-type: application/json' --data-binary @sample-query
样本查询:
{
"query": {
"bool": {
"must": [
{
"term": {
"reqId": "5T42Q1AUmd9LS1E8Q"
}
}
],
"filter": [],
"should": []
}
}
}
没有命中,也没有错误。
如果我尝试不同的字段,它会返回结果。其中两个结果具有相同的 reqId。
{
"query": {
"bool": {
"must": [
{
"term": {
"logType": "request_start"
}
}
],
"filter": [],
"should": []
}
}
}
这是elasticsearch为这两个字段生成的映射
"logType": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"reqId": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
真的不知道问题出在哪里。
【问题讨论】:
-
我刚刚读到elasticsearch存储了一个原始副本和一个解析后的副本。这可能是您遇到的问题,请尝试在术语中添加另一个道具:“index”:“not_analyzed”
-
它不喜欢那样。根据我的阅读,它不会尝试分析它是否被映射为关键字。
-
经过更多测试,至少有两个字段没有被处理。我减少了被索引的东西的数量,这似乎没有帮助。然后我删除了索引并在使用
reqId: { type: 'keyword' }向其写入任何记录之前设置了一个映射,现在它可以工作了。仍然会喜欢关于问题可能是什么的任何想法。
标签: elasticsearch elasticsearch-5