elasticsearch - 通过在Elasticsearch中部分匹配来搜索字符串数组

标签 elasticsearch

我有这样的 Realm :names: ["Red:123", "Blue:45", "Green:56"]它的映射是

"names": {
    "type": "keyword"
},
我怎么能这样搜索
{
  "query": {
    "match": {
      "names": "red"
    }
  }
}
获取red数组元素中names的所有文档?
现在它仅适用于
{
  "query": {
    "match": {
      "names": "red:123"
    }
  }
}

最佳答案

您可以添加multi fields或只将类型更改为text即可实现所需的结果
使用multi fields的索引映射

{
  "mappings": {
    "properties": {
      "names": {
        "type": "text",
        "fields": {
          "raw": { 
            "type":  "keyword"
          }
        }
      }
    }
  }
}
添加带有索引数据,映射,搜索查询和搜索结果的工作示例
索引映射:
{
  "mappings":{
    "properties":{
      "names":{
        "type":"text"
      }
    }
  }
}
索引数据:
{
  "names": [
    "Red:123",
    "Blue:45",
    "Green:56"
  ]
}
搜索查询:
{
  "query": {
    "match": {
      "names": "red"
    }
  }
}
搜索结果:
"hits": [
      {
        "_index": "64665127",
        "_type": "_doc",
        "_id": "1",
        "_score": 0.2876821,
        "_source": {
          "names": [
            "Red:123",
            "Blue:45",
            "Green:56"
          ]
        }
      }
    ]

关于elasticsearch - 通过在Elasticsearch中部分匹配来搜索字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64665127/

相关文章:

regex - 监控 http 响应内容正则表达式行为

elasticsearch - 我可以在Elasticsearch中过滤子数组吗?

elasticsearch - Elasticsearch-计算嵌套字段的重复值和唯一值

elasticsearch - 删除事件字段并在 Logstash 中引用它

java - ElasticSearch Java API : Enabling fielddata on text fields

amazon-web-services - Dynamodb流无需其他中间层即可直接进入Elasticsearch

elasticsearch - Elasticsearch,应用标准分析器后如何执行精确匹配?

amazon-web-services - Elasticsearch 服务AWS:滚动API没有给我预期的响应

elasticsearch - Elasticsearch -按文档类型排序

python - 如何在 Elasticsearch 中创建之前检查索引