elasticsearch - 如何过滤字典中的特定值?

标签 elasticsearch

假设我有这本字典:

{
    "name": "Jorje",
    "surname": "Costali",
    "extra_information": {
        "real_name": "mamino",
        "fake_name": "bambino",
        "age": "43",
        "gang": "gang34"
    }
}

如何查询以获取所有具有"extra_information.gang":"gang34"的条目?我想知道如何在准确的字词或匹配项之后进行过滤。

我努力了:
{
    "size": 20,
    "query": {
        "bool": {
            "filter": [
                {
                    "terms": {
                        "extra_information.gang": [
                            "gang34"
                        ]
                    }
                }
            ]
        }
    }
}

但它不返回任何条目。

我努力了:
GET _search
{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "extra_information.gang" : "gang34"
                    }
                }
            ]
        }
    }
}

并且可以使用,但我想将其设置为过滤器,而不是简单的匹配查询。

最佳答案

您是否尝试使用.keyword?喜欢:

"terms": {
    "extra_information.gang.keyword": [
        "gang34"
    ]
}

我尝试了您在嵌套字典文档中写的内容,它对我来说就像这样。

关于elasticsearch - 如何过滤字典中的特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59391180/

相关文章:

elasticsearch - elasticsearch bulkload性能问题

laravel - 设置尺寸参数ES laravel

elasticsearch - 按值筛选汇总

elasticsearch - 在Elasticsearch 6.3.2中是否可以更新文档中字段的映射数据类型?

jdbc - 在ElasticSearch中使用JDBC River(MYSQL)进行多索引

java - 从 ElasticsearchIO 等待 [10000] 毫秒后获取监听器超时

elasticsearch - 自定义分析器不工作 Elasticsearch

java - 尝试创建 TransportClient 时 Elasticsearch 5.1 错误 "java.lang.NoSuchFieldError: LUCENE_5_4_1"

elasticsearch - 在服务器上安装 Elasticsearch 但如果从另一台机器无法连接到它

elasticsearch - 在 Elasticsearch 中对嵌套对象进行排序