带有'>'的elasticsearch通配符字符串搜索查询
elasticsearch wildcard string search query with '>'
我有映射为 'not_analyzed' 的字符串字段。
每个字符串都有 '>' 符号,需要用它找到一些字符串。
string e.g)
one>two>tree>four>...
通过以下查询,我可以获得预期的结果。
"query": {
"wildcard": {
"activityseq": {
"value": "one*"
}
} }
但是当在值中添加'>'时,它不是。
"query": {
"wildcard": {
"activityseq": {
"value": "one>*"
}
} }
或
"query": {
"wildcard": {
"activityseq": {
"value": "one>*"
}
} }
有什么想法吗?
文件样本
{ "_index": "pm", "_type": "dmcase_00090", "_id":
"AVQ7Wjht0bpb6L5Mykw7", "_version": 1, "_score": 1, "_source": {
"endat": "1970-01-12T06:08:00+09:00", "startat":
"1970-01-06T23:02:00+09:00", "activityseq":
"MakeTicket>FirstContact>ArrangeSurvey>MakeTicket>InformClientSurvey>ArrangeSurvey>Survey>Survey>InternRepair>RepairReady>InternRepair>SendTicketToFinAdmin>TicketReady>ReadyInformClient",
"events": [ { ... some events
查询+结果
1.
"query": {
"wildcard": {
"activityseq": {
"value": "maketicket*"
}
}
}
result : data as I expect
2.
"query": {
"wildcard": {
"activityseq": {
"value": "maketicket>*"
}
}
}
结果
"hits": {
"total": 0,
"max_score": null,
"hits": [] }
3.
"query": {
"wildcard": {
"activityseq.raw": {
"value": "maketicket*"
}
}
}
结果
"hits": {
"total": 0,
"max_score": null,
"hits": [] }
4.
"query": {
"wildcard": {
"activityseq": {
"value": "maketicket>*"
}
}
}
结果
"caused_by": {
"type": "json_parse_exception",
"reason": "Unrecognized character escape '>' (code 62)\n at [Source: [B@61201912; line: 5, column: 37]"
}
您的查询需要看起来像这样才能正常工作,即您需要匹配 seqstring.raw
子字段,因为那是 not_analyzed
{
"query": {
"wildcard": {
"seqstring.raw": {
"value": "one>*"
}
}
}
}
我有映射为 'not_analyzed' 的字符串字段。 每个字符串都有 '>' 符号,需要用它找到一些字符串。
string e.g)
one>two>tree>four>...
通过以下查询,我可以获得预期的结果。
"query": { "wildcard": { "activityseq": { "value": "one*" } } }
但是当在值中添加'>'时,它不是。
"query": { "wildcard": { "activityseq": { "value": "one>*" } } }
或
"query": { "wildcard": { "activityseq": { "value": "one>*" } } }
有什么想法吗?
文件样本
{ "_index": "pm", "_type": "dmcase_00090", "_id": "AVQ7Wjht0bpb6L5Mykw7", "_version": 1, "_score": 1, "_source": { "endat": "1970-01-12T06:08:00+09:00", "startat": "1970-01-06T23:02:00+09:00", "activityseq": "MakeTicket>FirstContact>ArrangeSurvey>MakeTicket>InformClientSurvey>ArrangeSurvey>Survey>Survey>InternRepair>RepairReady>InternRepair>SendTicketToFinAdmin>TicketReady>ReadyInformClient", "events": [ { ... some events
查询+结果
1.
"query": { "wildcard": { "activityseq": { "value": "maketicket*" } } }
result : data as I expect
2.
"query": { "wildcard": { "activityseq": { "value": "maketicket>*" } } }
结果
"hits": { "total": 0, "max_score": null, "hits": [] }
3.
"query": { "wildcard": { "activityseq.raw": { "value": "maketicket*" } } }
结果
"hits": { "total": 0, "max_score": null, "hits": [] }
4.
"query": { "wildcard": { "activityseq": { "value": "maketicket>*" } } }
结果
"caused_by": { "type": "json_parse_exception", "reason": "Unrecognized character escape '>' (code 62)\n at [Source: [B@61201912; line: 5, column: 37]" }
您的查询需要看起来像这样才能正常工作,即您需要匹配 seqstring.raw
子字段,因为那是 not_analyzed
{
"query": {
"wildcard": {
"seqstring.raw": {
"value": "one>*"
}
}
}
}