GET questiondetails/question/_search
{
"query": {
"bool": {
"should": [
{
"match_phrase": {
"tags.keyword": "azure-data"
}
},
{
"match_phrase": {
"body": "azure-data"
}
},
{
"match_phrase": {
"title": "azure-data"
}
},
{
"match_phrase": {
"answers.body": "azure-data"
}
}
],
"minimum_should_match": 1,
"filter": {
"range": {
"creation_date": {
"gte": 1584748800,
"lte": 1585612800
}
}
}
}
},
"size": "10000"
}
添加注释
获取questiondetails_new/question/_search{“query”:{“bool”:{“should”:[{“match_prace”:{“tags.keyword”:“azure-data-factory”}},{“match_prach”:{“title”:“azure-data-factory”}}],“minimum_should_match”:1,“filter”:{“range”:{“creation_date”:{“gte”:1585170170,“lte”:1585170180}}}
在这个查询中,我需要所有与azure-data-factory完全匹配的文档,或者在titile(String)中有azure-data-factory的文档。应该是一个或搜索。但它与值为azure-data-factory-2的标记的匹配也是
添加一个char过滤器,在索引时将“-”替换为“_”。您不需要更改输入文本(它将与“-”一起工作)
PUT index38
{
"settings": {
"analysis": {
"char_filter": {
"my_char_filter": {
"type": "mapping",
"mappings": [
"- => _"
]
}
},
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"char_filter": [
"my_char_filter"
],
"filter": [
"lowercase"
]
}
}
}
},
"mappings": {
"properties": {
"tags": {
"type": "text",
"analyzer": "my_analyzer",
"fields": {
"keyword":{
"type":"keyword"
}
}
},
"title": {
"type": "text",
"analyzer": "my_analyzer",
"fields": {
"keyword":{
"type":"keyword"
}
}
}
}
}
}
查询:
{
"query": {
"bool": {
"should": [
{
"match_phrase": {
"tags": "azure-data-factory"
}
},
{
"bool": {
"must_not": [
{
"match_phrase": {
"tags": "azure-data-factory"
}
}
],
"should": [
{
"match_phrase": {
"body": "azure-data-factory"
}
},
{
"match_phrase": {
"title": "azure-data-factory"
}
},
{
"match_phrase": {
"answers.body": "azure-data-factory"
}
}
]
}
}
],
"minimum_should_match": 1
}
},
"size": "100"
}
如果使用默认分析器分析文本“azure-data-factory”,它将生成3个标记[“azure”,“data”,“factory”]
GET index38/_analyze
{
"text": "azure-data-factory"
}
Result:
"tokens" : [
{
"token" : "azure",
"start_offset" : 0,
"end_offset" : 5,
"type" : "<ALPHANUM>",
"position" : 0
},
{
"token" : "data",
"start_offset" : 6,
"end_offset" : 10,
"type" : "<ALPHANUM>",
"position" : 1
},
{
"token" : "factory",
"start_offset" : 11,
"end_offset" : 18,
"type" : "<ALPHANUM>",
"position" : 2
}
]
GET index38/_analyze
{
"text": "azure-data-factory",
"analyzer": "my_analyzer"
}
Result:
"tokens" : [
{
"token" : "azure_data_factory",
"start_offset" : 0,
"end_offset" : 18,
"type" : "<ALPHANUM>",
"position" : 0
}
]
我不知道如何通过MatchPhrasePrefix搜索索引中的文档。我想匹配整个搜索词短语,但允许在最后一个词上加前缀。 这个LINQ建筑给了我1.0分的一切。我将如何构建这个?另一方面,是否可以查看NEST正在构建的原始查询?那将非常有帮助!
//错误
我有一段说 我对代码的看法: 这是正确的做法吗??
我希望与字段中的字符串完全匹配,然后返回一天,提取所有此类记录。我所使用的json似乎也与简单的单词相匹配。我不确定我哪里出了问题。我需要向这个查询JSON添加吗?我目前拥有的JSON如下所示:
我在这里遵循这个例子: https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html 以下查询: 与预期的一条记录匹配。假设我只想返回用户为“约翰·史密斯”和“艾利斯·怀特”的文档。 我试过: 但这返回零结果。我如何获得同时包含“Alice White”和“John Smith”的文档(这应该只是在原始结果中
问题内容: 我必须找到具有字符串的匹配文档,例如:在某些“键”范围内的字符串:“ sky”。当我编写单独的匹配和范围查询时,我从ES获得输出,但是合并在一起时会抛出异常。 范围查询: 匹配查询: 组合查询: 组合查询在执行时会引发错误: 引发HTTP_EXCEPTIONS.get(状态代码,TransportError)(状态代码,error_message,Additional_info)ela