【发布时间】:2019-02-01 20:45:14
【问题描述】:
我在查询弹性搜索时遇到问题。以下是我的查询
GET _search {
"query": {
"bool": {
"must": [{
"match": {
"name": "SomeName"
}
},
{
"match": {
"type": "SomeType"
}
},
{
"match": {
"productId": "ff134be8-10fc-4461-b620-79s51199c7qb"
}
},
{
"range": {
"request_date": {
"from": "2018-08-22T12:16:37,392",
"to": "2018-08-28T12:17:41,137",
"format": "YYYY-MM-dd'T'HH:mm:ss,SSS"
}
}
}
]
}
}
}
我在 bool 查询中使用了三个匹配查询和一个范围查询。我的意图是获取具有这些完全匹配且在此日期范围内的文档。在这里,如果我更改名称和类型值,我不会得到结果。但是对于 productId ,如果我只输入 ff134be8,我会得到结果。任何人都知道这是为什么? .完全匹配适用于名称和类型,但不适用于 productId
【问题讨论】:
-
您也可以发布您的映射吗?您使用哪个弹性搜索版本?顺便说一句,如果你需要准确的检查,你应该实现一个术语查询而不是匹配一个
-
能否提供更多关于您的查询的信息,例如您是使用 kibana 还是任何 java 客户端来获取信息
-
@EiriniGraonidou,我没有使用任何映射。 AWS kinesis 正在将条目写入 ES。取决于我们传递的数据,它会自动创建映射
标签: java amazon-web-services elasticsearch elastic-stack