Json ElasticSearch-将查询匹配与通配符相结合
我对ElasticSearch还是相当陌生,但我目前正试图弄清楚为什么不能将通配符查询与匹配项混合使用 以这个JSON主体为例Json ElasticSearch-将查询匹配与通配符相结合,json,
elasticsearch,wildcard,Json,
elasticsearch,Wildcard,我对ElasticSearch还是相当陌生,但我目前正试图弄清楚为什么不能将通配符查询与匹配项混合使用 以这个JSON主体为例 { "size":"10", "from":0, "index":"example", "type":"logs", "body":{ "query":{ "match":{ "account":"1234" },
{
"size":"10",
"from":0,
"index":"example",
"type":"logs",
"body":{
"query":{
"match":{
"account":"1234"
},
"wildcard":{
"_all":"*test*"
}
},
"sort":{
"timestamp":{
"order":"desc"
}
}
}
}
它返回错误“SearchPhaseExecutionException[未能执行阶段[query],所有碎片失败
(完全转储:)
但是,如果我从请求主体中删除通配符或匹配键,它将按预期返回结果。
我一直在浏览文档,但我根本找不到任何相关内容。
起初我认为这与_all参数有关,但即使我显式指定一个键,也会出现相同的结果
在我假设应该使用'bool'运算符或类似的运算符来混合查询类型之前,有什么解释吗?异常表示它不理解字段“index”。查询Elasticsearch时,请在URL中包含索引名称和类型。
匹配
查询中没有通配符搜索。查询字符串
查询中有通配符搜索
您的查询应该是这样的,带有match
:
POST /example/logs/_search
{
"size": 10,
"from": 0,
"query" : {
"match": {
"account": "1234"
}
},
"sort": {
"timestamp" : {
"order": "desc"
}
}
或类似于以下内容的query\u字符串
:
POST /example/logs/_search
{
"size": 10,
"from": 0,
"query" : {
"query_string": {
"default_field": "account",
"query": "*1234*"
}
},
"sort": {
"timestamp" : {
"order": "desc"
}
}
编辑:添加一个通配符
查询示例:
POST /example/logs/_search
{
"size": 10,
"from": 0,
"query" : {
"wildcard": "*test*"
},
"sort": {
"timestamp" : {
"order": "desc"
}
}
这个错误是因为你有无效的json字段索引(还有其他的)。你是在做直接的CURL请求,还是使用特定编程语言的elasticsearch驱动程序?我最初使用的是官方的PHP库,但我一直在用CURL进行调试/测试。你能详细说明一下“无效的json字段索引”吗“匹配查询中没有通配符搜索。”,当执行{“查询”:{“通配符”:{“通配符”:{u all”:“test”}}按预期工作时,这怎么可能呢?Elasticsearch中有许多不同的查询类型。json
{“查询”:{“通配符”:{u all”:“test}}
是a。这不是a。Elasticsearch中的每个查询类型对于请求中的查询
对象都有不同的格式。a匹配
和通配符
查询函数的方式非常不同。