现在我想在字段中搜索id。
builder.startObject().startObject(TYPE_SERIES).startObject("properties");
builder.startObject(ID)
.field("type", "long")
.field("store", "yes")
.field("index", "analyzed")
.field("analyzer", "test_analyzer")
.endObject();
builder.startObject(TITLE)
.field("type", "string")
.field("store", "yes")
.field("index", "analyzed")
.field("analyzer", "test_analyzer")
.field("boost", "10")
.endObject();
我试图像这样搜索ID:
.setQuery(QueryBuilders.multiMatchQuery(query,
ID, TITLE))
顺便说一句,我可以用id获得结果,而不是用标题搜索。
我只是用id来搜索结果。
所以我改变了这个。 我使用MultiSearchResponse,以便我尝试执行两个孩子的查询。
一个是
.setQuery(QueryBuilders.idsQuery(TYPE).ids(query))
另一个是
.setQuery(QueryBuilders.multiMatchQuery(query,
TITLE,DESCRIPTION))
不幸的是,我只是得到带有标题或描述的结果。 如果我搜索ID,我无法获得任何结果。
===== 我想像这样执行
curl -XGET localhost:9200/test/series/99
我想用ID获取结果。不幸的是,我不知道如何使用JAVA API创建此代码。
请告诉我。谢谢。
答案 0 :(得分:3)
您可以搜索一个_id字段。因此,curl http://localhost:9200/_search?q=_id:99+AND+_type:series+AND+_index:test
或http://localhost:9200/test/series/_search?q=_id:99
应该可以解决问题。
答案 1 :(得分:3)
就像之前人们所说的那样,一个完整的例子会有所帮助。但是,让我们说你正在寻找的文件类型是"系列":
.setQuery(QueryBuilders.idsQuery("series").addIds("99"));
或者更完整:
SearchResponse esResponse = esClient.prepareSearch("test")
.setQuery(QueryBuilders.idsQuery("series").addIds("99"))
.execute().actionGet();