【问题标题】:How should query does it work ? ElasticSearch Java API查询应该如何工作?弹性搜索 Java API
【发布时间】:2017-10-10 05:08:09
【问题描述】:

我只想从这样一个简单的伪 SQL 查询中获取所有结果:

[...] WHERE 'idGroups' = '7078' AND ('titre' LIKE '%fuite%' OR 'tag' LIKE '%fuite%' OR 'message' LIKE '%fuite%')

这样做:

        BoolQueryBuilder qb = QueryBuilders
                .boolQuery()
                .must(QueryBuilders.termQuery("idGroups", 7078))
                .should(QueryBuilders.termQuery("titre", "fuite"))
                .should(QueryBuilders.termQuery("tag", "fuite"))
                .should(QueryBuilders.termQuery("message", "fuite"));

显然,这并没有返回我想要的结果..怎么了?

谢谢你:)

【问题讨论】:

    标签: java elasticsearch querydsl elasticsearch-dsl elasticsearch-java-api


    【解决方案1】:

    你能试试这个吗:

    QueryBuilders
                .boolQuery()
                .must(QueryBuilders.termQuery("idGroups", 7078))
                .should(QueryBuilders.wildcardQuery("titre", "*fuite*"))
                .should(QueryBuilders.wildcardQuery("tag", "*fuite*"))
                .should(QueryBuilders.wildcardQuery("message", "*fuite*")).minimumShouldMatch(1);
    

    【讨论】:

    • 我试过了,但效果不好。例如,如果我这样做:QueryBuilders .boolQuery() .must(QueryBuilders.termQuery("idGroups", 7078)) .should(QueryBuilders.wildcardQuery("titre", "*fuite*")) 我有一些结果,“TEST EVENEMENT - MANDAT”或“Test SDB”为“tire”..
    • 这是相同的结果.. 效率并不高
    • 你是否使用了一些插件,比如 sense 或者你编写 Elasticsearch Query DSL 的东西。然后试试这个查询:{"query":{"bool":{"must":[{"term":{"idGroups":{"value":7078}}},{"query_string":{"fields":["titre","tag","message"],"query":"*fuite*"}}]}}}
    • 请分享您的索引映射。 GET /index/type/_mapping
    • 所以,我的战争部署失败了,你的更新还没有被使用。现在,使用“minimumShouldMatch”进行更新,效果会更好!但是,如果我用“fuite”执行请求,我会得到像“fuite eau”这样的结果作为“tire”。当我使用“fuite eau”执行请求时,我有 0 个结果..
    猜你喜欢
    • 2017-07-31
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    相关资源
    最近更新 更多