gpt4 book ai didi

elasticsearch - Elasticsearch 唯一字段值

转载 作者:行者123 更新时间:2023-12-02 22:23:16 28 4
gpt4 key购买 nike

我正在尝试为搜索在Elastic Search 中获取仅组唯一值。我不知道为什么这不起作用。

我经历了许多StackOverflow问题,并在一天的大部分时间里阅读了文档。对于我来说,什么似乎都不起作用,下面提供了我上次尝试做的事情。

是否有任何理由希望重复返回相同的结果?也许适用于文档的不同版本?

在此示例中,我想要列出所有mfr_id以及它们的mfr_desc。我在一种仅用于搜索文档字段值的类型上运行此操作。似乎Agg条款是实现此目标的方法,有人看到我在做什么错吗?

1:API调用

GET /inventory/item/_search
{
"size": 0,
"_source": ["mfr_id", "mfr_desc"],
"aggs": {
"unique_vals": {
"terms": {
"field": "mfr_id.keyword"
/** I have to use .keyword, seems like my mappings isn't working */
}
}
}
}

2:映射文件

批量导入后运行的Mapping非常简单。我读到不分析键,如果您想要一个唯一的查询:
{
"index": "inventory",
"body": {
"settings": {
"number_of_shards": 1
},
"mappings": {
"_default_": {
"properties": {
"mfr_id": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}

3:我的结果
聚合大约有100条记录时,大约有10条记录。如果可能的话,我真的希望能够获得不仅仅是键的_source字段。
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 49341,
"max_score": 0,
"hits": []
},
"aggregations": {
"unique_vals": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 6815,
"buckets": [
{
"key": "14",
"doc_count": 24292
},
{
"key": "33",
"doc_count": 5508
},
...

最佳答案

I would really like to be able to get the _source fields of more than just a key if this is possible.



我认为,您只有一种选择,我也面临过同样的问题。试试这个 :-
{
"aggregations": {
"byId": {
"terms": {
"field": "mfr_id"
},
"aggs": {
"byDesc": {
"terms": {
"field": "mfr_desc"
}
}
}
}
}
}

现在,在通过Elastic search JAVA API进行迭代时,您将同时获得id和desc。
Terms aTerms = aAggregations.get("byId");
aTerms.getBuckets().stream().forEach(aBucketById-> {
Terms aTermsDesc = aBucketById.getAggregations().get("byDesc");
aTermsDesc.getBuckets().stream().forEach(aBucketByDesc -> {
//store id and desc
});
});

关于elasticsearch - Elasticsearch 唯一字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43458261/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com