我在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查询来搜索文档以匹配method和url的属性。我曾尝试提高网址的查询时间,但似乎无法正常工作。
编辑-映射信息
{
"nodeclient": {
"mappings": {
"logs": {
"properties": {
"method": {
"type": "string" },
"url": {
"type": "string" }
} } }
}
}
最佳答案
尝试添加引号
client.search({ index: 'my_node', body: { "query": { "bool": { "must": { "match": { "method": 'POST' }, "match": { "url": '/saas/services/1.0/account//purchase//cancel' } } } } } }
关于node.js - Elasticsearch中的搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40685190/