Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch elasticsearch查询字符串格式_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch elasticsearch查询字符串格式,elasticsearch,elasticsearch" /> elasticsearch elasticsearch查询字符串格式,elasticsearch,elasticsearch" />

elasticsearch elasticsearch查询字符串格式

elasticsearch elasticsearch查询字符串格式,elasticsearch,elasticsearch,我正在使用 SearchBuilder.searchSource.query(query_string).buildAsBytes() 在elasticsearch服务器上执行查询字符串 问题是我不知道查询字符串的正确格式是什么。例如,我想找到所有国家字段为美国的文档,我可以使用 http://my.elastic.search.server/foo/dummy/_search?q=country:US 为了得到我需要的东西。但是在java api方面,我尝试了country:US,q=c

我正在使用

SearchBuilder.searchSource.query(query_string).buildAsBytes() 
在elasticsearch服务器上执行查询字符串

问题是我不知道查询字符串的正确格式是什么。例如,我想找到所有
国家
字段为
美国
的文档,我可以使用

http://my.elastic.search.server/foo/dummy/_search?q=country:US
为了得到我需要的东西。但是在java api方面,我尝试了
country:US
q=country:US
,和
{\'country\':\'US\'}
,但每次我回到
SearchPhaseeExecutionException


ElasticSearch的文档并没有对本例中的查询字符串的格式提供任何说明,我已经用尽了与此主题相关的Google结果。有人能帮我吗?谢谢

根据您的REST查询,根据

SearchResponse response = client.prepareSearch("foo")
    .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
    .setQuery(termQuery("country", "US"))
    .execute()
    .actionGet();
您还可以使用纯查询字符串,如REST示例中所示:

    .setQuery(queryString("country:US"))

最佳参考是中可用的Javadoc。

基于您的REST查询,根据

SearchResponse response = client.prepareSearch("foo")
    .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
    .setQuery(termQuery("country", "US"))
    .execute()
    .actionGet();
您还可以使用纯查询字符串,如REST示例中所示:

    .setQuery(queryString("country:US"))

最好的参考是在中提供的Javadoc。

OK。似乎我需要传入一个更人为的json字符串

{ “查询字符串”:{ “默认_字段”:“另一个foo”, “查询”:“这个和那个或那个” } }


它很有用,因为我可以通过elasticsearch传递纯Lucene风格的查询

好的。似乎我需要传入一个更人为的json字符串

{ “查询字符串”:{ “默认_字段”:“另一个foo”, “查询”:“这个和那个或那个” } }


它很有用,因为我可以通过elasticsearch传递纯Lucene风格的查询

我最近就这个话题写了一篇综述:


我最近写了一篇关于这个主题的概述:


这是一个老问题,但当我为类似的问题苦苦挣扎时,我想我应该加上我的两分钱。 首先我找不到

SearchBuilder.searchSource.query(query_string).buildAsBytes() 
正如在ES java API的原始问题中所提到的

我的身体看起来像

{
  "query": {
    "query_string": {
      "default_field": "file",
      "query": "Java"
    }
  },
  "highlight": {
    "fields": {
      "file": {

      }
    }
  }
}
我发现这可以通过以下两种方式实现

    String queryString = "{" 
            + "\"query_string\": " 
                + "{"
                    + "\"default_field\":"
                + " \"file\","
                        + " \"query\": \"Email OR @gmail.com @yahoo.com\""
                        + "}"
                        + "}";
第一种方法

第二种方法

然后是标准

SearchResponse response = searchRequestBuilder.execute().actionGet();
注意事项

  • 不要在查询字符串中添加“查询”
  • 不要在查询字符串中添加突出显示的字段。使用addHighlightedField

  • 这是一个老问题,但当我为类似的问题苦苦挣扎时,我想我应该加上我的两分钱。 首先我找不到

    SearchBuilder.searchSource.query(query_string).buildAsBytes() 
    
    正如在ES java API的原始问题中所提到的

    我的身体看起来像

    {
      "query": {
        "query_string": {
          "default_field": "file",
          "query": "Java"
        }
      },
      "highlight": {
        "fields": {
          "file": {
    
          }
        }
      }
    }
    
    我发现这可以通过以下两种方式实现

        String queryString = "{" 
                + "\"query_string\": " 
                    + "{"
                        + "\"default_field\":"
                    + " \"file\","
                            + " \"query\": \"Email OR @gmail.com @yahoo.com\""
                            + "}"
                            + "}";
    
    第一种方法

    第二种方法

    然后是标准

    SearchResponse response = searchRequestBuilder.execute().actionGet();
    
    注意事项

  • 不要在查询字符串中添加“查询”
  • 不要在查询字符串中添加突出显示的字段。使用addHighlightedField

  • 我觉得这应该行得通

    QueryBuilder qb = QueryBuilders.queryStringQuery("pattern").field("field to search");
    SearchRequestBuilder sreq = client.prepareSearch("INDEX").setTypes("TYPE").setQuery(qb);
    SearchResponse response = sreq
                    .setFrom("From page")
                    .setSize("size")
                    .execute().actionGet();
    

    我觉得这应该行得通

    QueryBuilder qb = QueryBuilders.queryStringQuery("pattern").field("field to search");
    SearchRequestBuilder sreq = client.prepareSearch("INDEX").setTypes("TYPE").setQuery(qb);
    SearchResponse response = sreq
                    .setFrom("From page")
                    .setSize("size")
                    .execute().actionGet();
    

    SearchPhaseExecutionException
    说了什么?你想通过java创建json还是想使用java API?因此“更人为的json”起作用,tje建议“国家:美国”不起作用?SearchPhaseExecutionException怎么说?您想通过java创建json还是想使用java API?所以“更人为的json”起作用,tje推荐的“country:US”不起作用?termQuery()的源代码是什么?termQuery()的源代码是什么?