【发布时间】:2017-04-02 18:47:57
【问题描述】:
我的 elasticsearch 中有如下文件
{"method":"POST","url":"/saas/services/1.0/account/*/purchase/*/subscription/cancel"}
{"method":"POST","url":"/saas/services/1.0/account/*/purchase/*/cancel"}
我正在使用 node.js 客户端搜索这些文档。以下是我发送的查询。
示例 1 类型:DSL
client.search({
index: 'my_node',
body: {
query: {
bool: {
must: {
match: { method: 'POST' },
match: { url: '/saas/services/1.0/account/*/purchase/*/cancel' }
}
}
}
}
}
输出 我正在通过订阅取消获得另一条记录。查询与确切的文档不匹配。我尝试了以下查询,它适用于这种情况,但不适用于其他几个测试用例。
文档
{"method":"POST","url":"/paas/service/1.0/act/*/purchase"}}
{"method":"GET","url":"/paas/service/1.0/act/*/purchase"}}
{"method":"PUT","url":"/paas/service/1.0/act/*/purchase"}}
示例 2 类型:查询字符串
client.search({
index: 'my_node',
q: 'method: POST AND url: /saas/services/1.0/account/*/purchase'
}
输出
不管其他两个,我都得到了 GET 购买文件。尝试了其他几个文档,方法参数未得到识别。
如何编写 elasticsearch 查询来搜索文档以匹配方法和 url 的属性。我曾尝试为 url 增加查询时间,但似乎不起作用。
编辑 - 映射信息
{
"nodeclient": {
"mappings": {
"logs": {
"properties": {
"method": {
"type": "string" },
"url": {
"type": "string" }
} } }
}
}
【问题讨论】:
-
您的文档的映射是什么?你能用你从
curl -XGET localhost:9200/my_node/_mapping得到的输出更新你的问题吗? -
@val 我已经用映射信息更新了帖子。谢谢!!
标签: node.js elasticsearch full-text-search querydsl