elasticsearch,wildcard,Json,elasticsearch,Wildcard" /> elasticsearch,wildcard,Json,elasticsearch,Wildcard" />

Json ElasticSearch-将查询匹配与通配符相结合

Json ElasticSearch-将查询匹配与通配符相结合,json,elasticsearch,wildcard,Json,elasticsearch,Wildcard,我对ElasticSearch还是相当陌生,但我目前正试图弄清楚为什么不能将通配符查询与匹配项混合使用 以这个JSON主体为例 { "size":"10", "from":0, "index":"example", "type":"logs", "body":{ "query":{ "match":{ "account":"1234" },

我对ElasticSearch还是相当陌生,但我目前正试图弄清楚为什么不能将通配符查询与匹配项混合使用

以这个JSON主体为例

{
    "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
匹配
通配符
查询函数的方式非常不同。