首页 > 解决方案 > 返回匹配多个通配符字符串查询的文档

问题描述

我是 Elasticsearch 的新手,非常感谢您提供这方面的帮助

在下面的查询中,我只希望返回第一个文档,而是返回两个文档。如何编写查询以在两个单独的字段上搜索两个通配符字符串,但只返回匹配的文档?

我认为目前返回的内容取决于分数,但我不需要分数。

POST /pr/_doc/1
{
  "type": "Type ONE",
  "currency":"USD"
}

POST /pr/_doc/2
{
  "type": "Type TWO",
  "currency":"USD"
}

GET /pr/_search
{
  "query": {
      "bool": {
        "must": [
          {
            "simple_query_string": {
              "query": "Type ON*",
              "fields": ["type"],
              "analyze_wildcard": true
            }
          },
          {
            "simple_query_string": {
              "query": "US*",
              "fields": ["currency"],
              "analyze_wildcard":true
            }
          }
        ]
    }
  }
}

标签: elasticsearchkibana

解决方案


使用下面的查询,它使用default_operator: AND查询字符串来获取深度信息和进一步阅读。

搜索查询

{
  "query": {
    "query_string": {
      "query": "(Type ON*) AND (US*)",
      "fields" : ["type", "currency"],
      "default_operator" : "AND"
    }
  }
}

索引您的示例文档,它只返回您预期的文档:

"hits": [
      {
        "_index": "multiplequery",
        "_type": "_doc",
        "_id": "1",
        "_score": 2.1823215,
        "_source": {
          "type": "Type ONE",
          "currency": "USD"
        }
      }
    ]

推荐阅读