如何在Elasticsearch 1.7中查询任意字段上的字符串的精确匹配

q3qa4bjr  于 2022-11-02  发布在  ElasticSearch
关注(0)|答案(1)|浏览(197)

我们有一个用例,要求我们提取与任何字段值完全匹配的所有记录。例如,检查以下任何字段是否具有“auto-scaling-groups”的精确字符串值

Record 1: { "name": "auto-scaling-groups", "created_by": "John" }
Record 2: { "name": "postgres-db-node", "managed_by": "auto-scaling-groups" }
Record 3: { "name": "postgres-db-cluster", "managed_by": "auto-scaling-groups-manager"}
Record 4: { "name": "postgres-db-monitoring", "managed_by": "auto-scaling-scheduler"}

查询结果应只返回记录1和2,而不返回记录3和4。
请注意,我们有ES集群v1.7,没有奢侈使用最新的功能,如keyword分析仪如下。

{
    "query": {
        "query_string": {
            "query": "auto-scaling-groups",
            "analyzer": "keyword"
        }
    }
}
aiqt4smr

aiqt4smr1#

如果你没有一个关键字字段为您的文本字段,你需要搜索,即namecreated_bymanaged_by比这将是很难实现您的用例,你可以做的是创建一个keyword数据类型为所有这些字段,然后你可以使用term查询搜索的关键字字段,以获得精确的匹配。

相关问题