java - ElasticSearch搜索字段值不返回

标签 java elasticsearch liferay

可以说我在Elastic Search中有文档,该文档的_source中确实包含字段“provider”。
我尝试了很多查询,但是似乎没有一个查询返回带有搜索值的文档。
文件:

"_source" : {
      "jobs" : [ ],
      "provider" : {
        "id" : "1",
        "name" : "Coursera"
      },
      "sckLevels" : [ ],
      "scks" : [ ],
      "trArea" : [ ],
      "trElems" : [ ],
      "training" : {
        "description" : "Cyber sec desc",
        "id" : "0",
        "img" : "img link",
        "link" : "https://google.com",
        "name" : "Cyber sec",
        "trainingProvID" : "1"
      }
我的查询代码是:
SearchRequest searchRequest = new SearchRequest(index);
    SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
    sourceBuilder.query(QueryBuilders.termQuery("provider", "Coursera"));
    searchRequest.source(sourceBuilder);
this.multiRequest.add(searchRequest);
我的回答是空白。
谢谢。

最佳答案

您的Elasticsearch查询绝对没有问题

  • 似乎provider字段是对象或嵌套类型的,而在查询中您只是提到Coursera,但应与name字段的provider子字段匹配,并且基于对象或嵌套的数据类型,您需要修改查询。
  • 您正在使用未经分析的term query并用于关键字(即完全匹配),如果将name字段定义为text,则它将在索引时间将其转换为小写,而带有大写CourseraC将不匹配,您需要使用match查询在文本字段上。
  • 关于java - ElasticSearch搜索字段值不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63618058/

    相关文章:

    ssl - 在安全页面上使用 http 的 Liferay CSS URL

    java - 如何在java中获取字符串格式时间 "2019-01-25 14:34:34.123456789"自纪元以来的纳秒?

    elasticsearch - 在Digital Ocean的Droplet上更新了Elasticservice,Elasticsearch将不再启动

    ElasticSearch:使用输入字符串搜索多个字段(NumberFormatException)

    java - Liferay 门户组件 : liferay friendly custom Url parameter

    arrays - Portlet 事件发送对象数组

    java - 关闭查询后获取耶拿结果集 - 用于模块化

    java - JDK和JRE有什么区别?

    java - 如果元素的键重复但值必须附加到 java 中的单个键,如何从列表中删除该元素?

    html - Elasticsearch原始HTML文档搜索