我知道有批量索引操作的支持.但搜索查询是否也可以这样做?我想发送许多不同的无关查询(进行精确/召回测试),使用批量查询可能会更快
我正在使用olivere的弹性Go库来运行弹性查询 - https://godoc.org/github.com/olivere/elastic#NestedQuery
我正在尝试查询的数据如下所示:
"_source": {
"field1": "randVal1",
"field2": "randVal2",
"nestedfield": {
"ind1": "val1"
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试nestedfield使用NestedQueryElastic Go库中的调用运行查询,如下所示:
aquery := elastic.NewTermQuery("ind1", "val1")
query := elastic.NestedQuery("nestedfield", aquery)
Run Code Online (Sandbox Code Playgroud)
但我得到一个错误说明:
转换为NestedQuery的参数太多了
我试图检索所有的文件,其中ind1的nestedfield是val1.非常感谢构建此查询的任何帮助.
编辑:
我将其更改为NewNestedQuery,现在它没有给出错误.但是,它不会返回任何结果,即使该文档存在于索引中并且我能够查询非嵌套字段.
我试过这个:
aquery := elastic.NewTermQuery("ind1", "val1")
query := elastic.NewNestedQuery("nestedfield", aquery)
Run Code Online (Sandbox Code Playgroud)
还有这个:
query := elastic.NewNestedQuery("nestedfield", elastic.NewMatchQuery("nestedfield.ind1", "val1"))
Run Code Online (Sandbox Code Playgroud)
但他们都给出了0结果.知道我做错了什么吗?
编辑#2
映射是:
"field1": { "type": "string" },
"field2": { "type": "string" },
"nestedfield": {
"type": "nested"
}
Run Code Online (Sandbox Code Playgroud)
最终起作用的是:
query := elastic.NewMatchQuery("nestedfield.ind1", "val1")
Run Code Online (Sandbox Code Playgroud)
我能够在'nestedfield'中添加其他字段并执行以下查询: …
我需要自动完成短语.例如,当我搜索"alz痴呆症"时,我想得到"阿尔茨海默氏症的老年痴呆症".
为此,我配置了Edge NGram tokenizer.我在查询体中尝试了两个edge_ngram_analyzer并standard作为分析器.然而,当我试图匹配一个短语时,我无法得到结果.
我究竟做错了什么?
我的查询:
{
"query":{
"multi_match":{
"query":"dementia in alz",
"type":"phrase",
"analyzer":"edge_ngram_analyzer",
"fields":["_all"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的映射:
...
"type" : {
"_all" : {
"analyzer" : "edge_ngram_analyzer",
"search_analyzer" : "standard"
},
"properties" : {
"field" : {
"type" : "string",
"analyzer" : "edge_ngram_analyzer",
"search_analyzer" : "standard"
},
...
"settings" : {
...
"analysis" : {
"filter" : {
"stem_possessive_filter" : {
"name" : "possessive_english",
"type" : …Run Code Online (Sandbox Code Playgroud) 是否可以对Elasticsearch查询JSON发表评论?我希望能够在查询中添加一些额外的文本,这些文本是人类可读但被Elasticsearch忽略的.
例如,如果我有以下查询:
{ "query": { "match_all": {} } }
Run Code Online (Sandbox Code Playgroud)
我希望能够添加评论,也许是这样的:
{ "query": { "match_all": {} }, "comment": "This query matches all documents." }
Run Code Online (Sandbox Code Playgroud)
Hacky解决方法(例如,对结果没有影响的查询子句)也将受到赞赏.
我有一个这样的关键字字段:
"address": {
"type": "keyword"
}
Run Code Online (Sandbox Code Playgroud)
该值以驼峰式大小写形式编写,因为它是用于显示的。例如“1/10 某处路,某处 AAA 3333”
现在,我想对该字段进行不区分大小写的搜索,最好不要重新索引整个索引。
到目前为止我发现它match可以用于不区分大小写的搜索,但仅适用于text字段。
我唯一的选择是重新索引,例如通过text字段或使用小写/自定义标准化器/分析器?有什么办法可以在不重新索引的情况下做到这一点?
有以下数据(简单的srt)
1
00:02:17,440 --> 00:02:20,375
Senator, we're making our final
2
00:02:20,476 --> 00:02:22,501
approach into Coruscant.
...
Run Code Online (Sandbox Code Playgroud)
在 Elasticsearch 中索引它的最佳方法是什么?现在有一个问题:我希望搜索结果突出显示链接到时间戳指示的确切时间。此外,还有多个 srt 行重叠的短语(例如final approach在上面的示例中)。
我的想法是
或者还有另一种选择可以优雅地解决这个问题吗?
elasticsearch elasticsearch-model elasticsearch-mapping elasticsearch-query
我通过过滤和使用term查询来应用分数来检索文档。查询应匹配具有指定颜色的所有动物 - 匹配的颜色越多,文档的分数越高。奇怪的是,term查询terms结果却有不同的评分。
{
"query": {
"bool": {
"should": [
{"terms": {"color": ["brown","darkbrown"] } },
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
应该和使用一样
{"term": {"color": {"value": "brown"} } },
{"term": {"color": {"value": "darkbrown"} } }
Run Code Online (Sandbox Code Playgroud)
查询编号 无论 1 个或 2 个术语匹配,1 都会为文档提供完全相同的分数。如果匹配更多颜色,后者当然会返回更高的分数。
正如协调因子所述,如果匹配的术语越多,返回的分数应该越高。因此,这两个查询应该产生相同的分数 - 或者是因为term查询不分析搜索词?
我的字段被索引为文本。字符串被索引为字符串的“数组”,例如"brown","darkbrown"
ES中Only match和bool必须匹配查询有什么区别?
首先,仅使用匹配查询
{
"query":{
"match":{
"address":"mill"
}
}
}
Run Code Online (Sandbox Code Playgroud)
二、使用复合查询
{
"query": {
"bool": {
"must": [
{ "match": { "address": "mill" } }
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
你能告诉我一切吗?他们之间有什么区别?
具有Elasticsearch代表一个亲子结构order与order_revision孩子我要生成的直方图price显示的总和quantity.
{
"_type": "order",
"_id": "1063220887",
"_score": 1,
"_source": {
"order_id": "1063220887",
"product_id": "10446350",
"timestamp": 1462713302000
}
}
{
"_type": "order_revision",
"_id": "10234234",
"_parent": "1063220887",
"_source": {
"price": 9,
"quantity": 3,
"revision": 361,
"timestamp": 1462712196000
}
}
Run Code Online (Sandbox Code Playgroud)
以下聚合基本上有效,但返回所有现有修订的总和.
{
"aggs": {
"orders": {
"filter": {
"has_parent": {
"parent_type": "order"
}
},
"aggs": {
"quantity_per_price": {
"histogram": {
"field": "price",
"interval": 1
}
"aggs": {
"sum": {"field": quantity"}
}
}
}
}
} …Run Code Online (Sandbox Code Playgroud) elasticsearch elasticsearch-dsl elasticsearch-query elasticsearch-aggregation elasticsearch-5
我已经使用“AND”默认运算符设置了我的查询字符串搜索。我的查询如下:
{
"query": {
"query_string" : {
"query" : "Adam KT2 7AJ",
"default_operator" : "AND"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这能提供与下面相同的结果......但事实并非如此。
{
"query": {
"query_string" : {
"query" : "Adam AND KT2 AND 7AJ",
"default_operator" : "OR"
}
}
}
Run Code Online (Sandbox Code Playgroud)
虽然我看到 default_operator 对我的搜索结果产生了影响,但它并没有像我希望的那样工作。
例如:
查询 1:
Adam AND KT2 AND 7AJ, default_operator: or查询2:
Adam KT2 7AJ, default_operator: andanddefault_operator 在查询中产生与 AND 不同的结果)查询3:
KT2 7AJ, default_operator: and