【问题标题】:exact match with Elasticsearch query_string与 Elasticsearch query_string 完全匹配
【发布时间】:2020-08-13 01:04:48
【问题描述】:

我可以通过关注Elasticsearch boolean query 执行完全匹配查询:

GET my_index/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "some_field.keyword": "some value"
          }
        }
      ]
    }
  }
}

some_field 被索引为默认字符串类型:

"some_field" : {
  "properties" : {
    "value" : {
      "type" : "text",
      "fields" : {
        "keyword" : {
          "type" : "keyword",
          "ignore_above" : 256
        }
      }
    }
  }
}

由于某种原因,我只能使用Elasticsearch query_string。这意味着,我需要 Lucene 语法中的等效查询。

【问题讨论】:

  • 你能解决这个问题吗?

标签: elasticsearch lucene


【解决方案1】:

您可以在 query_string query 中使用 keyword 字段的变体执行相同的操作。

{
  "query": {
    "query_string": {
      "query": "some value",
      "default_field": "some_field.value.keyword"
    }
  }
}

【讨论】:

  • 根据OP提供的映射应该是some_field.value.keyword
  • 谢谢@Val。我错过了注意映射。
  • @Gibbs 如何将querydefault_field 组合成一行?
  • 为什么需要合并它们?如果是单行,因为它们是逗号分隔的,你可以用同样的方式添加它,用逗号分隔
  • @Gibbs 因为我使用的是 Neptune 全文搜索,所以它只允许单行查询 - docs.aws.amazon.com/neptune/latest/userguide/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
  • 2022-10-05
  • 1970-01-01
相关资源
最近更新 更多