【问题标题】:Delete ElasticSearch by Query with JEST使用 JEST 查询删除 ElasticSearch
【发布时间】:2017-06-02 08:15:56
【问题描述】:

我的 ElasticSearch 中有一些自定义数据(我们称之为 Camera),在 Kibana 中显示的数据是这样的

我尝试根据本文ElasticSearch Delete by Query中接受的答案通过Query删除数据,我的代码就像

String query = "{\"Name\":\"test Added into Es\"}";
DeleteByQuery delete = new DeleteByQuery.Builder(query).addIndex(this._IndexName).addType(this._TypeName).build();

JestResult deleteResult = this._JestClient.execute(delete);

结果是404 Not Found

很明显ElasticSearch中存在一个相机数据Name与查询匹配,所以我认为404是其他原因造成的.

我做错了吗?我应该更改查询字符串吗?

【问题讨论】:

    标签: elasticsearch elasticsearch-jest


    【解决方案1】:

    查询需要是真实的查询,而不是部分文档

    试试这个

    String query = "{\"query\": { \"match\": {\"Name\":\"test Added into Es\"}}}";
    

    【讨论】:

    • 你能分享完整的错误吗?还有你使用的是哪个版本的 ES
    • 当然!完整内容是这个{"found":false,"_index":"cameras","_type":"camera","_id":"_query","_version":1,"result":"not_found","_shards":{"total":2,"successful":1,"failed":0}}。我正在使用 ElasticSearch 5.4.0。
    • 好的,我看到了问题。 Jest 使用 _query 端点,它是 ES 2.x 中的 Delete by query 插件使用的端点。从 ES 5 开始,按查询删除功能已成为核心,端点现在命名为 _delete_by_querychange has been made recently 开玩笑,很快就会发布
    • 所以你有几个选择:1)降级到 ES 2.4,2)等到新的 Jest 发布或 3)检查 Jest 主分支并自己构建它。
    • 抱歉这么晚才回复……后来我没有去搜索,因为我自己构建它是很不可能实现的,而且我把我的工作转移到了另一个部分,所以我没有'不再处理这个问题了。但仍然非常感谢您的信息和建议,希望以后有办法解决(希望由 JEST 提供)。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 2016-08-02
    • 2015-01-04
    相关资源
    最近更新 更多