我正在尝试在ElasticSearch中获取不同的值及其数量.
这可以通过以下方式完成:
"distinct_publisher": {
"terms": {
"field": "publisher", "size": 0
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是它计算了条款,但是如果出版商中的值通过空格分隔,例如:"鸡狗"和5个文件在发布商字段中有此值,那么我得到5为鸡,5为狗:
"buckets" : [
{
"key" : "chicken",
"doc_count" : 5
},
{
"key" : "dog",
"doc_count" : 5
},
...
]
Run Code Online (Sandbox Code Playgroud)
但我希望得到结果:
"buckets" : [
{
"key" : "Chicken Dog",
"doc_count" : 5
}
]
Run Code Online (Sandbox Code Playgroud)
小智 5
你得到5桶每个的原因chicken和dog是因为你的文件进行分析,在您索引他们的时间.
这意味着elasticsearch做了一些小的加工转Chicken Dog成chicken和dog(小写和记号化的空间).您可以看到elasticsearch如何使用Analyze API将给定的文本分析为可搜索的标记,例如:
curl -XGET 'localhost:9200/_analyze?&text=Chicken+Dog'
Run Code Online (Sandbox Code Playgroud)
为了聚合"原始"不同值,您需要利用not_analyzed映射,因此elasticsearch不会进行常规处理.此参考可能有所帮助.您可能需要重新索引数据以应用not_analyzed映射以获得所需的结果.