我的目的是获取与指定日期范围和uuid(唯一用户ID)匹配的记录。查询似乎失败了:
如果我使用用户名尝试相同的查询,那么它可以正常工作。
我怀疑搜索字符串中的:
字符并尝试使用\
转义它,但它仍然无法正常工作。
可能是什么问题?
映射是:
{
"top_flows": {
"mappings": {
"top flows": {
"properties": {
"name": {
"type": "string"
},
"postDate": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
},
"uuid": {
"type": "string"
}
}
}
}
}
}
添加到elasticsearch中的JSON文档是:
doc = {
'postDate': timestamp_str,
'uuid': uuid,
'name': 'sam'
}
timestamp = time.time()
timestamp_str = datetime.fromtimestamp(timestamp).strftime('%Y-%m-%dT%H:%M:%S')
res = self.__eshandle.index(index="top_flows", doc_type='top flows', id=int(timestamp), body=doc)
答案 0 :(得分:0)
可能的问题是您没有在mapping中对术语字段进行分析。
放置映射
PUT /top_flows
{
"mappings": {
"users": {
"properties": {
"uuid": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
保存文件
POST /top_flows/blogpost
{
"uuid": "FF:FF:FF:FF"
}
搜索
POST /top_flows/_search
{
"query": {
"match_all": {}
} ,
"post_filter": {
"term": {
"uuid": "FF:FF:FF:FF"
}
}
}
答案 1 :(得分:0)
最终解决了!
GET /top_flows/_search
{
"query" : {
"range" : {
"postDate" : {
"from" : "now-5m",
"to" : "now"
}
}
},
"filter": {
"query_string": {
"query": "FF\\:FF\\:FF\\:FF\\:FF\\:FF\\:FF\\:FF\\:FF\\:FF\\:FF\\:11\\:8F\\:FF\\:FF\\:FF",
"fields": ["uuid"]
}
}
}
还不确定早期方法失败的原因:(