【发布时间】:2020-01-14 01:24:01
【问题描述】:
我正在使用 Elasticsearch 7.x 的 percolate 类型的属性创建一个通知订阅系统。问题是我无法对某些类型的字段进行渗透查询。
这是索引数据的示例。如您所见,我有一个查询索引以便能够执行渗透查询。我想提到的区别是查询中字段的名称可以是state 或created_by.full_name.raw
{
"_index": "widgets_2020",
"_type": "widget",
"_score": 1.0,
"_source": {
"created_at": "2020-01-09T21:58:14.123Z",
"query": {
"bool": {
"must": [],
"filter": [
{
"terms": {
"created_by.full_name.raw": [
"Ivan Ledner"
]
}
}
]
}
}
}
},
{
"_index": "widgets_2020",
"_type": "widget",
"_score": 1.0,
"_source": {
"created_at": "2020-01-09T22:02:24.133Z",
"query": {
"bool": {
"must": [],
"filter": [
{
"terms": {
"state": [
"done"
]
}
}
]
}
}
}
}
当我这样做时,Elasticsearch 会返回我期望的文档。
widgets_2020/_search
{
"query" : {
"percolate" : {
"field" : "query",
"document" : {
"state": ["created"]
}
}
}
}
但是当我搜索这个时,它什么也没有返回。
widgets_2020/_search
{
"query" : {
"percolate" : {
"field" : "query",
"document" : {
"created_by.full_name.raw": ["Ivan Ledner"]
}
}
}
}
是否有不同的方法来处理这些类型的名称?提前致谢!
【问题讨论】:
标签: elasticsearch