首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >弹性搜索中特定字段的过滤查询

弹性搜索中特定字段的过滤查询
EN

Stack Overflow用户
提问于 2015-12-29 16:59:05
回答 2查看 1.1K关注 0票数 0

我有这样的文件

代码语言:javascript
运行
复制
  {
    _index: "logstash-2015.11.30",
    _type: "hadoopgeneric",
    _id: "AVFVsF6ypMu_z_qvIUgL",
    _score: null,
    _source: {
             @timestamp: "2015-11-30T00:00:00.017Z",
             message: "selector : 48 - Element found for using multiple selectors using query .js-product-brand.product-brand",
             @version: "1",
             host: "ip-x-x-x-x",
             path: "/logs/stats/container/application_1448508514184_0178/container_e06_1448508514184_0178_01_003568/stderr",
             type: "hadoopgeneric",
             thread_id: "15119",
             thread_name: "MainThread",
             component_name: "Page",
             severity: "DEBUG",
             env: "STG",
             role: "spider",
             ip: "x.x.x.x",
             tags: [
                 "processed"
             ]
            },
   }

我必须过滤那些包含路径/logs/stats/container/application_1448508514184_0178/container_e06_1448508514184_0178_01_003568/stderr的文档(特别是在path字段中)

我尝试了这个通用的搜索查询http://localhost:9200/logstash-*/_search?pretty=true&q="/logs/stats/container/application_1448508514184_0178/container_e06_1448508514184_0178_01_003568/stderr"&sort=@timestamp&size=100000

它给了我结果,但现在我想只在path字段中搜索,方法是像这样触发这个查询(在这个查询中没有结果) -- http://localhost:9200/logstash-*/_search?pretty=true&q="path: /logs/stats/container/application_1448508514184_0178/container_e06_1448508514184_0178_01_003568/stderr"&sort=@timestamp&size=100000

我正在查阅这份关于弹性搜索的术语查询文档。但我不知道如何在弹性搜索中传递post参数这样的查询。我使用python库来请求弹性搜索。

下面是我迄今为止尝试过的

代码语言:javascript
运行
复制
esurl = http://localhost:9200/logstash-*/_search
r = requests.post(esurl,data={"term":{'path':'/logs/stats/container/application_1448508514184_0178/container_e06_1448508514184_0178_01_003568/stderr'}})
r.text

{"error":"SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[5D_RNDQPRf6xyLO1suIoCA][logstash-2015.11.30][0]: RemoteTransportException[[ip-x-x-x-x-elkstorage][inet[/x.x.x.x:9300]][indices:data/read/search[phase/query]]]; nested: SearchParseException[[logstash-2015.11.30][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [_na_]]]; nested: ElasticsearchParseException[Failed to derive xcontent]; }{[o8jLb8P5SWOfsCo78eUlHg][logstash-2015.12.01][0]: RemoteTransportException[[ip-x-x-x-x-elkstorage][inet[/x.x.x.x:9300]][indices:data/read/search[phase/query]]]; nested: SearchParseException[[logstash-2015.12.01][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [_na_]]]; nested: ElasticsearchParseException[Failed to derive xcontent];}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-29 18:20:15

Q参数似乎是错误的( "字符在错误的位置),尝试如下:

代码语言:javascript
运行
复制
http://localhost:9200/logstash-*/_search?pretty=true&q=path:"/logs/stats/container/application_1448508514184_0178/container_e06_1448508514184_0178_01_003568/stderr"&sort=@timestamp&size=100000

另一方面,术语查询是有效的,但它必须在query键中,如下所示:

代码语言:javascript
运行
复制
import requests
import json

esurl = "http://localhost:9200/logstash-*/_search"
r = requests.post(esurl,data=json.dumps({"query": {"term":{'path':'/logs/stats/container/application_1448508514184_0178/container_e06_1448508514184_0178_01_003568/stderr'}}}))
r.text
票数 2
EN

Stack Overflow用户

发布于 2016-01-24 13:46:31

正确构建对Elasticsearch的DSL的查询是一项痛苦的工作。很容易就搞错了。对于大多数使用程序,我只使用Head插件中的查询生成器,或者使用SQL插件。

两者都为生成查询提供了一个简单的UI --您可以将结果转换为json,并在代码中使用它。

这需要一些工作来安装,但如果您需要制定大量的ES查询,它确实是有回报的。

磁头插件 -不仅仅是构建查询。

sql插件

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34515498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档