我想查询ElasticSearch与Map的价值和检索的文件。
- 示例**:我已将以下两份文件编入索引
1. {
"timestamp": 1601498048,
"props": {
"cp1": "cv1",
"cp2": "cv2"
}
}
2. {
"timestamp": 1601498098,
"props": {
"key1": "v1",
"key2": "v2"
}
}
因此,我想使用整个Map值props
进行查询,其中
"props"
{
"cp1": "cv1",
"cp2": "cv2"
}
并且只返回所有匹配的Map值的文档,所以在这种情况下,结果只会是第一个文档,因为它匹配了给定的属性。
我可以查询只有一个像下面的Map值,但需要搜索整个Map。
curl -X GET "localhost:9200/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"bool" : {
"must" : [
{
"terms" : {
"customProperties.cp1.keyword" : [ "cv1" ]
}
}
]
}
}
}
'
那么我们如何查询整个map props
,并仅在所有map键值匹配时返回文档呢?
- 更新**主要是我需要一个QueryBuilder来搜索值的Map。我可以做的一组值如下
val sampleSet = setOf("foo", "bar")
val query = NativeSearchQueryBuilder()
.withQuery(
QueryBuilders.termsQuery(
"identifiers.endpointId.keyword", sampleSet)
)
.build()
我需要QueryBuilder
来搜索ES索引中的值Map,并且仅当整个Map值匹配时才返回文档。
请提建议。
1条答案
按热度按时间unftdfkk1#
你必须应用双重匹配条款。
或术语。