【发布时间】:2018-06-27 14:16:02
【问题描述】:
我正在使用 Elasticsearch 和 Kibana v5.6 并在 devTools 中,我可以使用 querydsl 中的脚本来查询有关字段名 = 值的文档,即:
GET indexA/_search
{
"query":{ "script":{ "script": """
def a = doc['field1'].value;
return a == 'value1';
"""}}
}
Above 将返回所有在名为“field1”的字段中具有“value1”作为值的文档。但是我无法在 _id 上搜索,官方文档说在 v6 之前我们应该使用 _uid,所以我尝试过,但没有运气。我使用脚本是因为在我能够使用 _uid 获取 _id 的值之后,基本上我想做一些类似于下面的值比较:
GET indexA/_search
{
"query":{ "script":{ "script": """
def a = doc['field1'].value;
def b = doc['_uid'].value;
return a == b;
"""}}
}
我认为 devTools 是我想要执行此操作的地方,而不是其他地方。任何指针表示赞赏
【问题讨论】:
-
field1 是什么样的,当您尝试运行查询时会发生什么?
-
field1 实际上是文档正文中的任何字段,当运行第一个查询时,它将返回所有包含'value1'的文档。例如,在 Elasticsearch 中,如果我有 3 个文档 { "name": "Adam", "field1" : "value1"} , { "name": "Tom", "field1" : "value1"} 和 { " name": "RC", "field1" : "value2"} 那么上面的查询会返回 2 doc,Adam 和 Tom 的 doc
标签: elasticsearch kibana querydsl