我的文档包含以下字段:
Sender: Bootstrapper.ScheduleJob.Runner
运行此查询时,我收到了结果:
GET _search
{
"query": {
"query_string": {
"query": "Bootstrapper.ScheduleJob.Runner"
}
}
}
但是当我试图搜索这样的部分值时,我没有得到任何结果:
GET _search
{
"query": {
"query_string": {
"query": "*strapper.Schedule*"
}
}
}
这是我索引的映射:
{
"logstash-2016.05.01": {
"mappings": {
"redis": {
"properties": {
"@timestamp": {
"type": "date",
"format": "dateOptionalTime"
},
"sender": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
我知道通配符查询不能很好地扩展到大量数据,但在这种情况下,我们将拥有有限数量的数据,并且它不会影响任何用户体验,因为它用于可视化ELK堆栈中的日志。然后Sender
字段可以包含许多不同的值,因此需要通配符查询。
任何想法或可能是另一种方法?
编辑:我使用的是Elastic Search 1.6.0的旧版本。它可以与此有关吗? EDIT2:这实际上会返回文档,但我正在寻找_all
的查询或查询,您可以在其中指定多个字段:
GET /logstash-2016.05.01/redis/_search
{
"query": {
"wildcard": {
"sender": "*strapper.Schedule*"
}
}
}
EDIT3:
运行此查询:
GET /logstash-2016.05.01/_search { "query": { "query_string": { "query": "Bootstrapper.ScheduleJob.Runner" } } }
给予:
{
"error": "ElasticsearchIllegalArgumentException[No feature for name [_search { \"query\": { \"query_string\": { \"query\": \"Bootstrapper.ScheduleJob.Runner\" } } }]]",
"status": 400
}
这个得到与上面相同的结果:
GET /logstash-2016.05.01/_search {
"query": { "query_string": { "query": "*strapper.Schedule*" } } }