gpt4 book ai didi

json - ElasticSearch-将查询匹配与通配符组合

转载 作者:行者123 更新时间:2023-12-02 23:37:21 24 4
gpt4 key购买 nike

我仍然对ElasticSearch还是很陌生,但是我现在正试图绕开为什么我也不能将通配符查询与匹配项混合使用的问题。

以这个JSON主体为例

{
"size":"10",
"from":0,
"index":"example",
"type":"logs",
"body":{
"query":{
"match":{
"account":"1234"
},
"wildcard":{
"_all":"*test*"
}
},
"sort":{
"timestamp":{
"order":"desc"
}
}
}
}

它返回错误“SearchPhaseExecutionException [无法执行阶段[查询],所有分片均失败;”;
(完整转储: http://pastebin.com/uJJZm8fQ)

但是,如果我从请求正文中删除通配符或匹配键-它会按预期返回结果。
我一直在浏览文档,但实际上根本找不到任何相关内容。
起初,我认为这与_all参数有关,但是即使我明确指定了键,也会出现相同的结果。

在我假设我应该使用'bool'运算符或类似的东西来混合我的查询类型之前,对此有什么解释吗?

最佳答案

异常表明它不理解“索引”字段。查询Elasticsearch时,您包括索引名称并在URL中键入。 match查询中没有通配符搜索。 query_string查询中存在通配符搜索。

您的查询应该类似于match:

POST /example/logs/_search
{
"size": 10,
"from": 0,
"query" : {
"match": {
"account": "1234"
}
},
"sort": {
"timestamp" : {
"order": "desc"
}
}

或类似的 query_string:
POST /example/logs/_search
{
"size": 10,
"from": 0,
"query" : {
"query_string": {
"default_field": "account",
"query": "*1234*"
}
},
"sort": {
"timestamp" : {
"order": "desc"
}
}

编辑:添加一个 wildcard查询的示例:
POST /example/logs/_search
{
"size": 10,
"from": 0,
"query" : {
"wildcard": "*test*"
},
"sort": {
"timestamp" : {
"order": "desc"
}
}

关于json - ElasticSearch-将查询匹配与通配符组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29337463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com